m_comb2.GetLBText(m_comb2.GetCurSel(), str1); //取得所选的字符串,并存放在str1里面
m_comb3.GetLBText(m_comb3.GetCurSel(),str2); //数据位
m_comb4.GetLBText(m_comb4.GetCurSel(),str3); //停止位
m_comb5.GetLBText(m_comb5.GetCurSel(),str4); //奇偶校验位
str1 = str1+','+str4+','+str2+','+str3;
m_mscom.put_CommPort(m_comb1.GetCurSel()+1); //选择串口
m_mscom.put_InputMode(1); //设置输入方式为二进制方式
m_mscom.put_Settings(str1); //comb2选择的波特率,无校验,8数据位,1个停止位
m_mscom.put_InputLen(1024); //设置当前接收区数据长度为1024
m_mscom.put_RThreshold(1); //缓冲区一个字符引发事件
m_mscom.put_RTSEnable(1); //设置RT允许
m_mscom.put_PortOpen(true); //打开串口
但是运行结果是串口没办法打开了
我自己看得结果应该是str1 = str1+','+str4+','+str2+','+str3; 这句的问题,但是具体是什么问题就不知道了,还请各位大神解惑
4 个解决方案
#1
"COM1" 不叫 “
COM 1”
即combo 中的 字符 不是 settings要的 !
即combo 中的 字符 不是 settings要的 !
#2
不太懂什么意思,是str1的偏移错误吗?我就是在这个错误上找不到正确的应该是怎样的了。
#3
确实是str1 = str1+','+str4+','+str2+','+str3; 这句话的问题,因为m_Comm.put_Settings()函数的标准形参格式是:
m_Comm.put_Settings("9600,n,8,1");//传输参数
其中第2个形参是 小写的n,写成None的话就错了。
改一下就好
m_Comm.put_Settings("9600,n,8,1");//传输参数
其中第2个形参是 小写的n,写成None的话就错了。
改一下就好
#4
果然好了,多谢
![VS2010中使用MSCOMM的串口通信问题 VS2010中使用MSCOMM的串口通信问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBeEwyWmhZMlV2T0RNdVoybG0%3D.jpg?w=700&webp=1)
#1
"COM1" 不叫 “
COM 1”
即combo 中的 字符 不是 settings要的 !
即combo 中的 字符 不是 settings要的 !
#2
不太懂什么意思,是str1的偏移错误吗?我就是在这个错误上找不到正确的应该是怎样的了。
#3
确实是str1 = str1+','+str4+','+str2+','+str3; 这句话的问题,因为m_Comm.put_Settings()函数的标准形参格式是:
m_Comm.put_Settings("9600,n,8,1");//传输参数
其中第2个形参是 小写的n,写成None的话就错了。
改一下就好
m_Comm.put_Settings("9600,n,8,1");//传输参数
其中第2个形参是 小写的n,写成None的话就错了。
改一下就好
#4
果然好了,多谢
![VS2010中使用MSCOMM的串口通信问题 VS2010中使用MSCOMM的串口通信问题](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBeEwyWmhZMlV2T0RNdVoybG0%3D.jpg?w=700&webp=1)