【解决CSerialPort 串口类不能连续发送的问题】
2015-03-24 10:31
363 查看
前面问题是网上找的一个,如下:
我给一个机器发送串口命令,单个命令发送没问题,
连续发送的时候有问题,
比如,连续发了三个,如下:
m_ser.WriteToPort(chSend1);
m_ser.WriteToPort(chSend2);
m_ser.WriteToPort(chSend3);
只有最后一个发送的起作用.
原因我就不解释了。
我的方式是加定时器就可用完全解决这个问题:
头文件中声明一个变量:sum;
构造函数中初始化:sum = 0;
void CMyView::Button1()
{
CString chSend[3]={chSend1,chSend2,chSend3};
m_ser.WriteToPort(chSend[sum]);
SetTimer(1,100,NULL);
}
void CMyView::OnTimer(UINT nIDEvent)
{
switch(nIDEvent)
{
case 1:
KillTimer(1);
if(sum< 2)
{
sum++;
OnButton1();
}
else if(sum== 2)
{
sum= 0;
break;
}
break;
}
问题解决。不用修改CSerialPort
类。
我给一个机器发送串口命令,单个命令发送没问题,
连续发送的时候有问题,
比如,连续发了三个,如下:
m_ser.WriteToPort(chSend1);
m_ser.WriteToPort(chSend2);
m_ser.WriteToPort(chSend3);
只有最后一个发送的起作用.
原因我就不解释了。
我的方式是加定时器就可用完全解决这个问题:
头文件中声明一个变量:sum;
构造函数中初始化:sum = 0;
void CMyView::Button1()
{
CString chSend[3]={chSend1,chSend2,chSend3};
m_ser.WriteToPort(chSend[sum]);
SetTimer(1,100,NULL);
}
void CMyView::OnTimer(UINT nIDEvent)
{
switch(nIDEvent)
{
case 1:
KillTimer(1);
if(sum< 2)
{
sum++;
OnButton1();
}
else if(sum== 2)
{
sum= 0;
break;
}
break;
}
问题解决。不用修改CSerialPort
类。
相关文章推荐
- 解决magento1.6快速支付不能自动发送邮件的问题
- 解决飞信不能发送短信问题
- 解决ios上audio不能自动播放,也不能连续播放的问题
- 解决exchange 2013发送邮件都在草稿箱内不能发送和删除问题
- 串口通信CSerialPort类WriteToPort不能连续发送的问题
- 解决一个小问题:IE不能发送Cookie(测试第一篇)
- 解决CserialPort类串口程序中WriteToPort只能发送一次问题
- JavaMail邮件发送在linux环境下不能发送的问题解决
- 如何解决开启瑞星邮件监控,outlook不能发送邮件的问题
- 连续多次发送Ajax前面的请求被后面的覆盖以致不能执行的问题
- 解决sendmail 不能发送邮件问题
- 连续点击按钮后多次发送数据问题的解决办法
- LNMP系列教程之 解决sendmail不能发送邮件问题
- 解决雅虎邮箱使用outlook只能收不能发送的问题(针对yahoo.com.cn)
- 关于saba不能发送中文邮件问题解决
- Mac自带mail客户端只能收不能发送邮件问题解决
- 使用 Mailx 通过 SMTP 在 Centos 上发送邮件,解决 WordPress 发送邮件问题,解决centos7不能发送邮件的问题
- 解决HTML表格连续超长英文字符串不能正确换行问题
- CSerialPort不能连续发送的问题
- 解决Thunderbird 邮件客户端不能发送邮件问题的方法