串口数据读取的问题?

tjbdsh 2011-07-27 12:14:27
硬件:RS232测高仪器,每次上一个人用串口调试助手读取是"height=167"
问题1:为什么读取的是height=167,而不是进制数
====================
问题2:
我写的读取代码
SerialPort serial = new SerialPort();
private void btnStar_Click(object sender, RoutedEventArgs e)//接收
{
serial.PortName = "COM1";
serial.BaudRate = 9600;
serial.DataBits = 8;
serial.Parity = Parity.None;
serial.StopBits = StopBits.One;
serial.Open();
textBox1.Text=serial.ReadExisting();


}
点接受就自动关闭了,哪里的问题,本意是想把串口的数据读取到textBox1.Text。
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonespace 2011-07-27
  • 打赏
  • 举报
回复
ReadExisting方法会把串口读到的数据转成字符串,用何种编码方式转换,取决于Encoding,你没有设置,所以默认使用ascii码把串口数据转换为字符串,

如果不想直接转成字符串,可以用Read方法代替ReadExisting,读出到byte[]然后自己转换。
stonespace 2011-07-27
  • 打赏
  • 举报
回复
你可以用try/catch把这段代码包起来,看看是什么异常,
stonespace 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tjbdsh 的回复:]
如果不转换 直接读出来应该用什么
[/Quote]

用SerialPort.Read方法可以直接读出二进制数据,SerialPort还有一个属性可以查看串口发送的数据长度有多少字节,可以查一下msdn
cxs99999 2011-07-27
  • 打赏
  • 举报
回复
private void readcard()
{
string readstr;
if (rb_dao2.Checked == true)
{
readstr = "]";
dao = 2;
//byte[] data2 = HexStringToBinary("1B 5D");
}
else
{
readstr = "T]";
dao = 3;
}
if (this.sp_card.IsOpen == false)
{
sp_card.PortName = "COM1";
sp_card.BaudRate = 9600;
sp_card.DataBits = 8;
sp_card.StopBits = System.IO.Ports.StopBits.One;
sp_card.Parity = System.IO.Ports.Parity.None;
sp_card.Open();
}

try
{
byte[] data = System.Text.Encoding.ASCII.GetBytes(readstr);
// 发送数据到串口
sp_card.Write(data, 0, data.Length);
//清空缓冲区
sp_card.DiscardInBuffer();
//sp_card.Close();
}
catch
{
MessageBox.Show("数据发送失败!", "系统提示");
}
}
兔子-顾问 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tjbdsh 的回复:]

楼上的,谢谢。但是为什么串口助手直接读取的是Height=175,我认为应该是8或者16进制的数据啊,
[/Quote]

别应该,人家就这么明文的你就这么读取。至于为什么点击就程序崩溃,try,catch看看异常,或是单步调试。
tjbdsh 2011-07-27
  • 打赏
  • 举报
回复
如果不转换 直接读出来应该用什么
tjbdsh 2011-07-27
  • 打赏
  • 举报
回复
楼上的,谢谢。但是为什么串口助手直接读取的是Height=175,我认为应该是8或者16进制的数据啊,

111,120

社区成员

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

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

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