WinAPI写串口通讯的问题
DCB m_dcb;
char szBaud[] = "baud=9600 parity=E data=8 stop=0";
GetCommState(m_hComm, &m_dcb);
m_dcb.fParity = 1;
BuildCommDCB(szBaud, &m_dcb);
SetCommState(m_hComm, &m_dcb);
//下面的代码就有问题了
GetCommState(m_hComm, &m_dcb); ---->读出来的m_dcb.fParity=0????
这到底是什么原因?
问题点数:50、回复次数:5Top
1 楼wut55()回复于 2005-06-02 00:11:35 得分 0
你在
GetCommState(m_hComm, &m_dcb);
后加一个int error = GetLastError();
看看error是什么值,然后用MSDN查一下这个error代码什么。
如果error是0,说明什么错都没有。
那你就得查查SetCommState()的使用合不合情了Top
2 楼huguyue6670(美丽海洋)回复于 2005-06-02 09:02:15 得分 25
对m_dcb初始化错误,在MSDN中查一下 DCB结构,对波特率、奇偶校验位、停止位、数据位分别初始化。Top
3 楼yadang(亚当条)回复于 2005-06-02 10:33:09 得分 0
各位:
SetCommState()和GetCommState(m_hComm, &m_dcb)都没有错误。使用也没有问题。
是不是在2000下PC机的串口通讯,WIN-API的奇偶校验就不起作用?
Top
4 楼qinxiaogang(qinxg)回复于 2005-06-03 09:25:49 得分 25
GetCommState(m_hComm, &m_dcb); ---->读出来的m_dcb.fParity=0????
很正常呀! 里面就是用数字0,1,2...来表示的. 不是用'E'这种字符的Top
5 楼yadang(亚当条)回复于 2005-06-05 10:33:52 得分 0
qinxiaogang(qinxg):
兄弟看清楚了,不是:m_dcb.ParityTop




