SerialPort 的 readLine的时候不能继续往下执行

john_jia 2007-12-28 10:58:48
我在调试的时候SerialPort 的 readLine的时候不能继续往下执行。
在ReadLine的时候停止不动了。
这是为什么呢?
...全文
246 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddwhome 2008-07-11
  • 打赏
  • 举报
回复
我的也一样,如果没有设置超时,程序就会锁死.而且我的DataReceived事件也不会执行.
Lvgdq 2007-12-28
  • 打赏
  • 举报
回复
恩,我正在调试...有问题一起讨论嘛,这方面我菜鸟...最近项目里用到才开始学的。
john_jia 2007-12-28
  • 打赏
  • 举报
回复
你超时的话。把超时时间设置长点
Lvgdq 2007-12-28
  • 打赏
  • 举报
回复
那我也不知道是怎么回事,要不楼主你这样初始化一下。

SerialPort serialPort1= new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

因为我看你的serialPort1里面奇偶效验位这些都没有设置
john_jia 2007-12-28
  • 打赏
  • 举报
回复
没任何提示。
Lvgdq 2007-12-28
  • 打赏
  • 举报
回复
恩,这个程序我也用过。也是在那里卡住的。不过我是抛出的超时异常,所以我估计我是因为串口数据没传过来的原因。如果你是两台机子连上串口进行数据传输的话,我就不知道为什么了...
另外,卡住了程序应该会有提示报错这些吧?
john_jia 2007-12-28
  • 打赏
  • 举报
回复
没提示超时。就是停着不动了。
我目前测试的是字符串的传输。

发送端:
serialPort1.PortName = "COM1";

serialPort1.BaudRate = 9600;

serialPort1.Open();

byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);

string str = Convert.ToBase64String(data);

serialPort1.WriteLine(str);
serialPort1.WriteLine("");
MessageBox.Show("数据发送成功!", "系统提示");
serialPort1.Close();

接收端:
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(S));
t.Start();

}
private void S()
{
try
{
serialPort1.PortName = "COM1";

serialPort1.BaudRate = 9600;

serialPort1.Open();


byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox1.Text = Encoding.Unicode.GetString(data);

serialPort1.Close();

MessageBox.Show("数据接收成功!", "系统提示");
}
catch (Exception exx)
{
MessageBox.Show(exx.Message);
}
}

但是到readline的时候就没反应了。
Lvgdq 2007-12-28
  • 打赏
  • 举报
回复
是不是提示超时异常?
LZ你读什么样的串口信息?我也遇到了这个问题还没解决...
john_jia 2007-12-28
  • 打赏
  • 举报
回复
不知道为什么我的DataReceived没执行

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧