以下是我发命令的代码,麻烦帮我看看怎么读取返回值啊,能不能紧接着发数据的代码读啊,我懂得是在是少,恳请帮忙!!
DCB PortDCBzt;
HANDLE hPortzt;
COMMTIMEOUTS ctozt;
HANDLE hThreadzt;//创建线程
/***初始化*************************/
ctozt.ReadIntervalTimeout = 0;
ctozt.ReadTotalTimeoutMultiplier = 0;
ctozt.ReadTotalTimeoutConstant = 0;
ctozt.WriteTotalTimeoutMultiplier = 0;
ctozt.WriteTotalTimeoutConstant = 0;
SetCommTimeouts (hPortzt, &ctozt);//设定超时
if (hThreadzt)
CloseHandle (hThreadzt);
PurgeComm(hPortzt,PURGE_TXCLEAR|PURGE_RXCLEAR);
/***打开端口*************************/
hPortzt=CreateFile(C综合控制App::ytSerialPort+_T(":"), GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING,0, NULL);
if(hPortzt==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T( "open com port error ! "));
}
GetCommState (hPortzt, &PortDCBzt); //配置串口
PortDCBzt.DCBlength= sizeof (DCB);
PortDCBzt.BaudRate= CBR_9600;
PortDCBzt.fBinary = TRUE;
PortDCBzt.fParity= FALSE;
PortDCBzt.ByteSize= 8;
PortDCBzt.Parity= NOPARITY;
PortDCBzt.StopBits= ONESTOPBIT;
if(!SetCommState(hPortzt, &PortDCBzt))
{
AfxMessageBox(_T( "Set com port error ! "));
}
/***发命令函数*************************/
unsigned char up_act[8]={0xFF,0x01,0x00,0x51,0x1C,0x1C,0x8A,0x00};
DWORD dwBytesWrite=32;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hPortzt,&dwErrorFlags,&ComStat);
bWriteStat=WriteFile(hPortzt,up_act,dwBytesWrite,& dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox(_T("写串口失败!"));
}
PurgeComm(hPortzt, PURGE_TXABORT|
PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
------解决方案--------------------------------------------------------
最好是单独开一个线去ReadFile。
------解决方案--------------------------------------------------------
串口读取操作是在线程中处理的,就如楼上说的,你要创建一个线程。然后在线程里面ReadFile读取串口数据
------解决方案--------------------------------------------------------
发送完 就可以直接调用readfile函数读取啊
另外 writefile之后马上PurgeComm 会有问题的
------解决方案--------------------------------------------------------
用SerialPort类吧,这样串口编程就简单多了,而且这个类支持多线程的
------解决方案--------------------------------------------------------
创建线程,在线程内监听READFILE函数
------解决方案--------------------------------------------------------
http://www.gjwtech.com/serialcomm.htm
是讲串口技术的,楼主可参考。
------解决方案--------------------------------------------------------
WriteFile(); ReadFile(); 可以在一起..试下?
------解决方案--------------------------------------------------------
快一个月了还没写完么?
开 一个读线程不停地循环读取数据
在线程中可以调用WaitCommEvent 检测到EV_RXCHAR 事件 时 再readfile读取数据