最近买了龚建伟的《Visual c++/TurboC串口通信编程实践 》,学习Remon Spekreijse编写的CserialPort类,我在想如果我要把串口接收过来的数据处理后在屏幕上画图,CserialPort类中一次才接收一个字符而且发送消息,这样要画图的话是不是慢了些?于是我自行修改ReceiveChar函数,取消接收一个字符就发送消息。在类中定义一个static   CString  m_strReceived;(在CserialPort类的实现文件中初始化)用来存放当前串口中所有数据。然后我定义一个定时器(200ms)定时接收m_Received=m_Port.m_strReceived;(我想实时画图)
但我发现m_Port.m_strReceived;没有数据,单步调试发现在类中m_strReceived已经有数据了,为何
m_Received=m_Port.m_strReceived;中没有数据?搞得我有点乱了!!
所以我想请教大家:
1、如果每次只接收一个字符,那么我应该如何实时画图?
2、如果按我修改的,错在哪里?
3、怎样利用CserialPort类来实现数据采集实时画图比较好?

解决方案 »

  1.   

    接受字节自己可以调节在它的ReceiveChar中有ReadFile(),第三个为接受的字节你定义的m_strReceived并没有传到ReadFile()中,所以你不能得到串口的值要想进行实时画图,还要自己设计一个线程,接受到数据之后,在线程中画图
      

  2.   

    用SDK 
    的CreateFile来读写串口比较好。
    你也可以自己为此来写一个类。
    比较好控制,速度也快。
    ---------------------------------------
    相信自己,相信明天!快给我分,不然我抢的啦^_^
    ----------------------------------------
                           时光.漫步