首页 新闻 会员 周边

串口通信,超级终端连接正常,但程序运行却不能返回OK或EROOR

0
悬赏园豆:5 [已关闭问题] 关闭于 2011-04-18 10:05

串口与工业手机通信,用超级终端连接发送都正常,但用C#中的SerialPort类来进行端口读写,连接正常,

发送也应该发送出去了,但没有任何接收,无限郁闷

串口配置如下:

serialPort.PortName = "COM3";
serialPort.BaudRate
= 115200;
serialPort.DataBits
= 8;
serialPort.Parity
= Parity.None;
serialPort.StopBits
= StopBits.One ;

serialPort.ReadTimeout
= 1000;

写操作:

 serialPort.Write (msg);

读操作

   注册DataReceived 事件:serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);

读方法:

void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] readBuffer = new byte[serialPort.ReadBufferSize];
serialPort.Read(readBuffer,
0, readBuffer.Length);

string s = Encoding.Unicode.GetString(readBuffer);
textBox2.Text
=s;
}
可是DataReceived 事件从来没触发过

问题补充: 你们有用过工业手机或者短信猫吗? 现在又出现了一个问题,我无法向超级终端中写入任何东西,但是打电话给工业手机时,超级终端中能看到工业手机发过来的“RING”信号,发短信也有信号。 感觉就是工业手机不接收任何写入,但可以向外发送,是不是我的什么误操作(比如热插拔)导致工业手机自己锁住自己?
hydrology_cheng的主页 hydrology_cheng | 初学一级 | 园豆:170
提问于:2011-04-02 20:29
< >
分享
所有回答(2)
1
你试一下把serialPort.Parity = Parity.None;
改成
serialPort.Parity = Parity.Space;
我之前遇到过这样的问题,改了就好了,应该都是端口参数设置的问题。
 

 

 

lookrc | 园豆:205 (菜鸟二级) | 2011-04-02 22:57
0

datareceived事情是辅助线程,无法直接调用主线程中的textbox控件,需要用控件的invoke方法.

程序应该会报错。既然你没有报错,所以串口根本没接受到数据,无法触发事情。首先串口参数要设置正确,这跟你的外设有关,然后用open方法打开。还有这样来读比较科学:

byte[] readBuffer = new byte[serialPort.BytesToRead];

serialPort.Read(readBuffer, 0, serialPort.BytesToRead);

C&J | 园豆:205 (菜鸟二级) | 2011-04-05 02:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册