|
网上找吧,超级多例子,这个是我的一个
BOOL CGSU36Dlg::init_com()
{
m_com.SetCommPort(1);
if (!m_com.GetPortOpen())
{
m_com.SetSettings("9600,N,8,1");
m_com.SetRThreshold(90);
m_com.SetInputMode(1);
m_com.SetPortOpen(TRUE);
return TRUE;
}
else
{
AfxMessageBox("COM1打开失败");
return FALSE;
}
DWORD style=WS_VISIBLE;
// h_com.Create(NULL,style,CRect(0,0,0,0), this, 0);
DWORD err;
h_com = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if ( h_com == (HANDLE)0xffffffff )
{
err = GetLastError();
// MessageBox(err);
}
/* BYTE Parity; 0-4=None,Odd,Even,Mark,Space
BYTE StopBits; 0,1,2 = 1, 1.5, 2 */
DCB dcb;
GetCommState (h_com, &dcb);
dcb.BaudRate = 9600; // 波特率
dcb.ByteSize = 8; // 数据长度
dcb.Parity = 0; // 校验
dcb.StopBits = 0; // 停止位
// dcb.fBinary = TRUE;
// dcb.fParity = TRUE;
if( !SetCommState(h_com, &dcb) )
{
MessageBox("error when set com1");
return FALSE;
}
/*
DCB wdcb;
GetCommState (h_com, &wdcb);
wdcb.BaudRate=9600;
if(!SetCommState (h_com, &wdcb))
{
MessageBox("error");
}
PurgeComm(h_com, PURGE_TXCLEAR);
*/
SetupComm(h_com, 1024,1024);
PurgeComm(h_com, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
COMMTIMEOUTS to;
memset(&to, 0, sizeof(to));
to.ReadIntervalTimeout = 10;
SetCommTimeouts(h_com, &to);
return TRUE;
}
|
|