最近开始做串口方面的东西.而且是第一次做.断断续续出了很多问题、之前只向下位机发送一条命令.就1s一次那种.现在要发送两条、向两个不同的下位机发送.也是1s发一次、一次发两条(命令不一样、通信协议也不一样).同一个串口、现在出现一个问题、是写入缓存时还是读取缓存时判断两条命令、因为要分别解析协议、最终合并分析取到结果、是开两个线程处理还是通过循环处理.求大神给点思路、有代码最好、如果我没有说清楚、欢迎提问.....谢谢 、C#串口通信

解决方案 »

  1.   

    觉得 C#的串口 不如VS6里的COM好用
      

  2.   

    分开放,问题点就在这里,你需要使用ReadLine函数接收,然后一行行放,但是,如果回馈的消息不止一行,那么会交错在一起。而且不直到个串口先。
    这种模式感觉不合理,如果有个规律就好了。可以具体说下回馈的消息有什么规律吗?
      

  3.   

    不会啊 ..
    网上的代码很多的
    发一条收一条我会、两条我就不会了、不知道怎么从缓存里取、而且回来的第二条长度也不固定...你是说一个COM口发送给两个不同的COM口 不能直接实现 需要自己定义通讯协议
      

  4.   

    不会啊 ..
    网上的代码很多的
    发一条收一条我会、两条我就不会了、不知道怎么从缓存里取、而且回来的第二条长度也不固定...你是说一个COM口发送给两个不同的COM口 不能直接实现 需要自己定义通讯协议
    两个下位机并在一个com口上的.发送两条命令分别到两下位机、由地址号来区分、如果一起发送的话、接收到的数据是混在一起的、有办法在接收时分开接收到么、还是只能发一条接收了再发第二条、
      

  5.   

    楼主,我也是刚接触串口编程,如果进行多步传输怎么办,都是一些bin文件,可以留个QQ不,请教下
      

  6.   

    我个人觉得可以发四个数据语句,2个一组,先发要给哪个下位机的,然后发发送的语句,之后在发另一个。
    接收就比较简单了,发个SNLT$23,12,43,23*10;SNTN$23,12,43,23*10的先判断前面的字符就知道是哪个下位机发过来的了,然后开两个缓存,按设定往里面扔,要用哪个到哪个缓存里面去找。
    至于发送如果下位机也能够像接受这么判断就好了,不过看你的表述估计是两块模块,那么只能先告诉他我要到哪去了。
    祝你有更好的方法
      

  7.   

    你自己string a【】,b【】,a里面存什么你不知道?b里面就存另外的啊,你说这个不是很简单吗,就和单个存储一样,没区别
      

  8.   

    不会啊 ..
    网上的代码很多的
    发一条收一条我会、两条我就不会了、不知道怎么从缓存里取、而且回来的第二条长度也不固定...你是说一个COM口发送给两个不同的COM口 不能直接实现 需要自己定义通讯协议
    两个下位机并在一个com口上的.发送两条命令分别到两下位机、由地址号来区分、如果一起发送的话、接收到的数据是混在一起的、有办法在接收时分开接收到么、还是只能发一条接收了再发第二条、需要你在应用层(APP)定义自己的 通信协议