2,425
社区成员
发帖
与我相关
我的任务
分享
void SETUP_DCB()
{
DCB dcb;
memset(&dcb, 0, sizeof(DCB) );
GetCommState(hComFile, &dcb);
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = 9600; //波特率
dcb.fParity = FALSE; //无奇偶校验
dcb.Parity = NOPARITY; //无校验
dcb.StopBits = ONESTOPBIT; //1位停止位
dcb.ByteSize = 8; //数据位数
dcb.fOutxCtsFlow = 0;
dcb.fOutxDsrFlow = 0;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = 0;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fOutX = 0;
dcb.fInX = 0;
dcb.fErrorChar = 0;
dcb.fBinary = 1;
dcb.fNull = 0;
dcb.fAbortOnError = 0;
dcb.wReserved = 0;
dcb.XonLim = 2;
dcb.XoffLim = 4;
dcb.XonChar = 0x13;
dcb.XoffChar = 0x19;
dcb.EvtChar = 0;
SetCommState(hComFile, &dcb);
}
hComFile = CreateFile(L"COM3", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hComFile == INVALID_HANDLE_VALUE)
{
CloseHandle(hComFile);
return TRUE;
}
SETUP_DCB();
hThread = CreateThread(NULL, 0, MyThreadFunction, NULL, 0, &ThreadID);
DWORD WINAPI MyThreadFunction(LPVOID lpParam)
{
...
i = ReadCount;
while (i)
{
ClearCommError(hComFile, &Errors, &comstat);
ReadFile(hComFile, pBuffer + ReadCount - i, i, &NumberOfRead, NULL);
i -= NumberOfRead;
}
...
}
_serialPort = new SerialPort();
_serialPort.PortName = "com3";
_serialPort.BaudRate = 9600;
_serialPort.Parity = Parity.None;
_serialPort.DataBits = 8;
_serialPort.StopBits = StopBits.One;
_serialPort.Handshake = Handshake.XOnXOff;
_serialPort.Open();
for (int i = 0; i < 17; i++)
{
BUFFER[i] = (byte)_serialPort.ReadByte();
}