问题1:我有一台发卡器,上电连接PC机后,打开串口调试助手工具。刷卡后,串口调试助手工具接收不到数据,必须勾选该界面上的RTS选项后,才能够收到数据包。请问:勾选RTS选项,串口调试助手工具软件是有改变串口参数的某个设置,还是向发卡器发了什么数据包?
如果我要写个接收上位机的软件的话,串口参数该注意哪几项?
我贴几句简单的的代码:各位指导下:
打开串口:
hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(INVALID_HANDLE_VALUE==hCom)
{
MessageBox("串口打开失败!");
return 0;
}
SetupComm(hCom,1024,1024);
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=DWORD(atoi("115200"));
dcb.ByteSize=8;
dcb.fBinary=TRUE;
dcb.fParity=TRUE;
dcb.StopBits=ONESTOPBIT;
dcb.Parity=NOPARITY;
if(!SetCommState(hCom,&dcb))
{
AfxMessageBox("设置失败!");
return 0;
}
if (!SetCommMask(hCom,EV_RXCHAR | EV_TXEMPTY))
{
MessageBox("掩码设置失败.","提示");
return 0;
}
读取数据包的代码:
WaitCommEvent(hCom,&dwEvtMask,&toverlapped);
dwResult=WaitForSingleObject(toverlapped.hEvent,100);
if(WAIT_OBJECT_0==dwResult)
{
if(EV_RXCHAR==dwEvtMask)
{
WaitForSingleObject(hmutex,INFINITE);
DWORD res,factbyte;
memset(databuffer,0,2000);
COMSTAT rst;
CString str1;
int i=0;
ClearCommError(hCom,&res,&rst);
roverlapped.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
if(ReadFile(hCom,&databuffer,rst.cbInQue,&factbyte,&roverlapped))
{
}
}
}
3 个解决方案
#1
串口号,端口,波特率
#2
问题已解决!
#3
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
#1
串口号,端口,波特率
#2
问题已解决!
#3
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法