none
求助,关于serialPort串口通讯的问题 RRS feed

  • 问题

  • 如果更改serialPort.Parity的值由space到mark,必须要先close串口,更改后再打开串口吗??

    我在程序中(VS2005)设置断点跟踪发现Parity属性可以改变,不用重新关闭打开串口,但是无法和plc通讯了;如果在改变Parity的值是重启串口就可以通讯了。不知道为什么?

    明明属性值已经改变了,为什么不能通讯,还要在初始化?

    我每次对串口发送数据时需要改变Parity的值:space:发送起始码 然后变为mark发送地址 然后变为space发送数据,这样就会造成频繁打开关闭串口。希望高手指点一下。

    2008年11月8日 6:32

全部回复

  • 没有人顶呀

    if (serialPort1.IsOpen)
                    {
                        serialPort1.Close();
                        serialPort1.IsOpen = false;
                        serialPort1.Parity = Parity.Mark;
                        serialPort1.Open();
                    }
                    else
                    {
                        serialPort1.Parity = Parity.Mark;
                        serialPort1.Open();
                    }

    我这样写的话,通讯一段时间会提示已关闭safe handle的异常

    2008年11月10日 8:19
  • 你给Parity赋值了,那Parity的值当然会改变。问题是这个值不能在串口打开的时候应用到串口。就是说,串口硬件的寄存器值还是原来那个值。
    2011年4月14日 0:56
  • wince/mobile设备还是xp上?估计是和驱动有关。或是你设置后,多发一个无用字节先,比如00或ff
    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月14日 1:41
    版主