串口接收数据的问题,极难.....

auly403 2004-12-22 01:58:21
用微软的MSCOMCTL,对下位机发数据...
先波特率为19200,发一个数据 再波特率为2400,发一次数据,
收数据时却很怪, 如果不设中断的话,,m_ctrlComm.GetCommEvent()都是==3或者==4没有一次是等于2的.
但若设了中断后就会正常,也就是m_ctrlComm.GetCommEvent()==2.
请高手指点......

顺便问一句,==3和==4是什么事件.?
...全文
119 点赞 收藏 6
写回复
6 条回复
yintongshun 2004年12月23日
在接收完数据前不能改波特率,可以完成一桢数据后再改变波特率发送下一桢
回复 点赞
auly403 2004年12月23日
特殊原因呀,改变波特率要不要延时再发数据呢?

求救中..
回复 点赞
zdleek 2004年12月22日
不懂 我做过一个程序,用到的串口通信在传输过程中是不改变波特率的
搂住为什么要改变波特率呢
回复 点赞
auly403 2004年12月22日
我已经在事件4中用sleep(100);为什么还不能收到数据呢?
回复 点赞
TieShou 2004年12月22日
switch(m_commctrl.GetCommEvent())
{
case 1: // vbMSCommEvSend:
"Sending"
case 2: // vbMSCommEvReceive:
"Receiving"
case 3: // vbMSCommEvCTS:
"Change in CTS Detected"
case 4: // vbMSCommEvDSR:
"Change in DSR Detected"
case 5: // vbMSCommEvCD:
"Change in CD Detected"
case 6: // vbMSCommEvRing:
"Phone is Ringing"
case 7: // vbMSCommEvEOF:
"End of File Detected"
case 1001: // vbMSCommErBreak:
"Break Received"
case 1002: // vbMSCommErCTSTO:
"CTS Timeout"
case 1003: // vbMSCommErDSRTO:
"DSR Timeout"
case 1004: // vbMSCommErFrame:
"Framing Error"
case 1006: // vbMSCommErOverrun:
"Overrun Error"
case 1007: // vbMSCommErCDTO:
"Carrier Detect Timeout"
case 1008: // vbMSCommErRxOver:
"Receive Buffer Overflow"
case 1009: // vbMSCommErRxParity:
"Parity Error"
case 1010: // vbMSCommErTxFull:
"Transmit Buffer Full"
}
回复 点赞
likunfeng 2004年12月22日
Q:
顺便问一句,==3和==4是什么事件.?
A:
#define comEvSend 1 //发送事件。
#define comEvReceive 2 //接收事件。
#define comEvCTS 3 //clear-to-send //线变化。
#define comEvDSR 4 //data-set ready //线变化。
#define comEvCD 5 //carrier detect //线变化。
#define comEvRing 6 //振铃检测。
#define comEvEOF 7 //文件结束。
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7894

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告