一个串口编程的问题,热心人帮帮忙

zhaogaojian 2004-12-17 01:40:40
我最近在做一机房监控系统:可是遇上了一个问题
设备与串口相连(此设备需要发送一条指令,然后就会返回当前设备的状态,可以通过
串口读出)
我为了监视设备是否正常,就开了一个线程来监测串口接收的数据,然后固定时间间隔发送指令
读取设备状态,但我如果想要对设备进行"其他操作",这样串口接收到的数据就是"其他操作"的
返回值,这样就会出错,我如何知道哪个返回值对应哪条指令。
另外我用CodeGuru上的那个CSerialPort类时,通过任务管理器可以看到内存在不断的增加
怎么解决。( 通过在OnTimer中调用
m_Port.WriteToPort("#0100oo\r\n"); )
...全文
168 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaogaojian 2004-12-20
  • 打赏
  • 举报
回复
到底我的程序用同步好还是异步好啊
zhaogaojian 2004-12-18
  • 打赏
  • 举报
回复
孤独客的有道理
legendhui 2004-12-17
  • 打赏
  • 举报
回复
我也有类似的问题,都发了好长时间了,没有人回复请高手看看。
http://community.csdn.net/Expert/topic/3654/3654639.xml?temp=.9870264
lonelyman96 2004-12-17
  • 打赏
  • 举报
回复
如果是需要完成几个不同的命令,最好不要使用多线程,对串口的操作使用同步。不要使用Overlap。可以将串口设置成写入和读取不延时. Timeouts中设置.然后自己在ReadFile的外围设置自己的超时控制。就是做一个循环,在规定的时间内反复的读取串口,直到读出想要的数据。如果在规定的时间内没有读出想要的数据,则返回超时。继续下一个命令。这样,各条命令是顺序执行,不会发生混乱。如果使用多线程或者重叠结构,则同步和结果码识别比较困难。
DentistryDoctor 2004-12-17
  • 打赏
  • 举报
回复
应该是用的overlap IO,写串口之前,应该检查上一次IO写操作是否已经完成。
zhaogaojian 2004-12-17
  • 打赏
  • 举报
回复
这些命令返回都差不多,如果是错误就完全一样,假如我发了几个命令,结果其中一个没有
返回,这些就对不上号了
hongtog 2004-12-17
  • 打赏
  • 举报
回复
一般设备返回的命令都定义了一定的格式, 命令有特定的开始符和结束符,
并要解码, 把所有的接收打的命令放入一个队列中, 找到特定的开始符和结束符,
解码能成功就是你要的吧.
huaguli 2004-12-17
  • 打赏
  • 举报
回复
up
zhaogaojian 2004-12-17
  • 打赏
  • 举报
回复
已经发过去了,主要只有三句话
OnInitDialog()
OnTimer()
双杯献酒 2004-12-17
  • 打赏
  • 举报
回复
不要让其他操作和读取状态的操作同时进行。
bool bOp = false;

// 读状态
if(!bOp)
{
bOp = true;
// 读状态操作
// ...
bOp = false;
}
else
{
// 表示正在进行其他操作
}

// 其他操作
if(!bOp)
{
bOp = true;
// 其他操作
// ...
bOp = false;
}
else
{
// 表示正在进行读状态
}
DentistryDoctor 2004-12-17
  • 打赏
  • 举报
回复
内存在不断的增加,那说明是内存泄漏嘛。
可以将程序发给我看一看。
DentistryDoctor@msn.com

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧