最近小弟在做一个读串口的小东西,串口是USB转的虚拟串口,使用的C#中的SerialPort组件进行串口操作,但是遇到一个很头疼的问题就是:读数据的时候不知道什么原因就会出现整个系统卡死的问题,并且这个问题的出现好像是随机的,操作系统完全不响应,只能硬关机,很是郁闷,但是开发商给的一个Demo程序没这个问题,我用自己写的那个程序在本机的COM1口进行数据收发也没这个问题!不知道各位有没有相同的遭遇,有知道问题出在哪,用什么方法解决的吗?

解决方案 »

  1.   

    遇到过,
    后来用OCX方式解决的。
      

  2.   

    能说下具体是什么原因造成的吗?还有就是OCX方式具体的解决方案是什么呢?
      

  3.   

    也许你在设备管理器里面检查一下你的用USB虚拟的COM口是哪几个?因为机器本身会自带的COM口会有COM1、COM2等等,再用USB转换的COM口就会从后面接着排,比如COM3、COM4这样如果你的程序里面仍然是对COM1来进行读写,就不对了。
      

  4.   

    虚拟的串口为COM3,程序中选择的也是COM3口
      

  5.   

    我给你打个比方吧。比如说你家里找人来刷墙,需要3天时间才能刷好。所谓“稀里糊涂地开发”就好比如说小工在很短时间是只让你看个最后的墙面,这之前有什么问题他会尽量遮盖。而“测试驱动开发”就好象是有一个世界上最严格的监理师每隔10分钟就来用仪器检查十好几个点,别说小工偷工减料少做好几道工序,就算是在一道工序上有一点意外的bug也会被监理师立刻找出原因并立刻解决,之后才允许小工继续干活。你所描述的那种态度,就好象这个喜欢干活时遮盖、事后出了问题绝对不肯铲掉墙面重来的小工的态度,除了建议你把这块工作交给别人做,也没有什么别的建议了。
      

  6.   

    如何你保证程序是完全一样的,只是从COM1换成COM3就不一样,这没道理的哦?我用了一只Digi品牌的一拖四在好几个地方都没问题的。
      

  7.   

    这也正是我纳闷的地方,不知道是为什么!不知道能否发一个demo程序给我,表示感谢先!
      

  8.   

    只记录异常是没有用的。你要把所有的操作都记录下来。一般这样的问题先看看系统补丁都打了嘛。
    把你的winform程序改为console.
    把所有的操作步骤打印控制台。要运行窗口。showdialog 就可以。
    一般这样的问题都是太快的循环读取引起的。
      

  9.   

    是双向的,要发送0x20开始采集数据,0x31停止采集数据,我现在可以读到数据,读出来的数据经过验证也是正确的,就是读取的过程称即使什么都不操作,读一会就出现那个问题!,下面是开发者给的协议说明:
    2. 硬件接口:
    USB 转 232接口。
    3. 接口协议:
    通讯速率:14400 bps
    数据格式:8位数据+1位停止位
    4. 关于USB接口的说明:
    驱动程序安装:首先解压缩附带的driver.rar文件,然后运行setup.exe安装驱动程序。
    驱动程序安装后,在计算机上生成一虚拟 COM 接口 ,编写应用程序时将通讯口设置为虚拟 COM 口。
    本模块232虚拟接口采用5线制(GND.RX.TX.DTR..RTS)通讯。编写应用程序时,应设置DTR 与 RTS 为0
    5. 主机串行通信协议:
    启动采样:发送  0x20 
    停止采样:发送  0x31
    接收数据序列(AD转换数据有效位:10位): 
      字节0             字节1                字节2                 字节3
    起始标志:0x20 脉搏/呼吸AD转换低8位 脉搏/呼吸AD转换高2位 0x00
      

  10.   

    问题终于解决了,我发现那个CP2101驱动是03年的的版本大概是4.1,估计是这个驱动版本对.net支持的不够好,我网上找个CP210x,06年的,版本大概是4.38,更新驱动后再读就没问题了,哈哈!