الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه - عنوان غير مناسب : ]مساعدة

بدأه ali harriri في 16 مايو 2008 · 2 رد · 440 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم وحمة الله

أحتاج المساعدة في لغة visual c++ أرجوا إعطائي التوابع مع أسماء مكتباته

التوابع التي أحتاجها هي التي تتعامل مع

lpt port

com port

usb port

وتابع التأخير الزمني

وجزاكم الله كل خير

#2

تفضل اخي هذا المثال لـ Albert Pascual

ملف الترويسة Header File

__gc class CSerialPort
{
public:
	CSerialPort(void);
	__nogc struct DCB
	{
		int DCBlength;
		int BaudRate;
		int fBinary;
		int fParity;
		int fOutxCtsFlow;
		int fOutxDsrFlow;
		int fDtrControl;
		int fDsrSensitivity;
		int fTXContinueOnXoff;
		int fOutX;
		int fInX;
		int fErrorChar;
		int fNull;
		int fRtsControl;
		int fAbortOnError;
		int fDummy2;
		unsigned short wReserved;
		unsigned short XonLim;
		unsigned char ByteSize;	//byte
		unsigned char Parity; // byte
		unsigned char StopBits;	//byte
		char XonChar;
		char XoffChar;
		char ErrorChar;
		char EofChar;
		char EvtChar;
		unsigned short wReserved1;
	};

	bool	Open( char *szComPort);
	void	Write(String __gc * buf);
	String  *Read();
	void	Close();

private:	
	FileStream	* m_MyFileStream;
	StreamWriter * m_MyStreamWriter;
	StreamReader * m_MyStreamReader;

	static long GENERIC_READ  = 0x80000000L;
	static long GENERIC_WRITE = 0x40000000L;

	static int OPEN_ALWAYS = 4;

	static int FILE_FLAG_NO_BUFFERING = 0x20000000;
	static int FILE_FLAG_OVERLAPPED   = 0x40000000;

};

namespace MyKernel
{
[DllImport("kernel32.dll")]
extern bool SetCommState(System::IntPtr hFile, CSerialPort::DCB * lpDBC);
[DllImport("kernel32.dll")]
extern int CreateFile( char * lpFileName , int dwDesiredAccess, int dwShareMode,
  IntPtr lpSecurityAttributes, int dwCreationDisposition,
  int dwFlagsAndAttributes, IntPtr hTemplateFile );

}

ملف تعريف الدوال

CSerialPort::CSerialPort(void)
{
}

bool CSerialPort::Open( char *szComPort)
{
	int handle;

	handle = MyKernel::CreateFile(
		szComPort,
		GENERIC_READ | GENERIC_WRITE,
		0,
		NULL,
		OPEN_ALWAYS,
		FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED,
		NULL);

	try
	{
		IntPtr	pCom(handle);
		m_MyFileStream = new FileStream(pCom, 
										FileAccess::ReadWrite, 
										true, 1000, true);		
	}

	catch (Exception  * e ) {
		Console::WriteLine(e->ToString());
		  return false;
	  }


	DCB	* CommSettings = new DCB();
	CommSettings->DCBlength = sizeof(CommSettings);
	CommSettings->BaudRate  = 38400;
	CommSettings->ByteSize  = 8;
	CommSettings->Parity	= 0;
	CommSettings->StopBits	= 1;

	MyKernel::SetCommState(m_MyFileStream->get_Handle(), 
						   CommSettings);


	try
	{
		m_MyStreamReader = new StreamReader(m_MyFileStream);
	}

	catch (Exception  * e ) {
		Console::WriteLine(e->ToString());
		  return false;
	  }

	if ( m_MyFileStream->get_CanWrite() )
	{
		try
		{
			m_MyStreamWriter = new StreamWriter(m_MyFileStream);
		}

		catch (Exception  * e ) {
			Console::WriteLine(e->ToString());
			return false;
		}
	}

	return true;
}

void CSerialPort::Write(String __gc * buf)
{
	try
	{
		m_MyStreamWriter->Write(buf);
		m_MyStreamWriter->Flush();	

	}

	catch (Exception  * e ) {
		Console::WriteLine(e->ToString());	
	  }
}

String  * CSerialPort::Read()
{
	String	*buf;

	buf = m_MyStreamReader->ReadLine();

	return (buf);
}

void CSerialPort::Close()
{
	m_MyStreamWriter->Close();
	m_MyStreamReader->Close();
	m_MyFileStream->Close();
}

للتجربة

CSerialPort * pSerial = new CSerialPort;

pSerial->Open(S"COM2:");
Console::WriteLine(pSerial->Read());

ابحث عن هذا الكتاب "USB Complete" by Jan Axelson

تحياتي

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

العنوان غير مناسب

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

It's hard to stay in such ridiculous situation

مواضيع مشابهة