cf中打开串口问题,有点悲剧
wince6.0,s3c6410
用cf写了个串口的程序,在open的时候出现:
com1 rate=19200,parity=0,databits=8
System.IO.IOException: IOException
M?System.IO.Ports.SerialStream.WinIOError(Int32 errorCode, String str)
M?System.IO.Ports.SerialStream.CheckResult(Int32 err)
M?System.IO.Ports.SerialStream.InitializeDCB(Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Boolean discardNull)
M?System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
M?System.IO.Ports.SerialPort.Open()
M?ST.GlobalSystem.Init()
M?ST.AppMain.Program.Main()
整个板子重新boot,大部分情况下,没有问题,大概启动个50次有一次,打开失败,郁闷,测试了好几天了,
[解决办法]
用TRY 的办法打开
然后不论出错否,检查ISOPEN=TRUE
如果为TRUE 则,已经可以正常读写了。
[解决办法]
是用c#的SerialPort控件封装的方法打开的吗?
WinCE下的这个控件,发现过一些问题,后来放弃了,还是用了API。
同意楼上的说法,这样的代码肯定要加上异常安全处理。
不知道c#可不可以返回一些error code,看下出错原因。
如果打开失败的话,retry几次可不可以呢。
我们以后的项目也有可能会使用c#.net,关注此帖。
[解决办法]
看下我资源里面的C#串口的例子
[解决办法]
我之前也用过c#,只不过当时没有频繁打开关闭串口,没有发现这个问题。
[解决办法]