如下图:textbox1输入一个字符‘a’,点发送,通过虚拟串口看到Com1打开,并发送数据,窗口提示“数据发送成功”,再点接收按钮,就卡死了
程序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!", "系统提示");
}
private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("数据接收成功!", "系统提示");
}
}
}
能详细一些吗?
C#中serialport控件做的串口发送和接收Form程序不对
ReadLine是阻塞读,如果发出去的数据已经过时,没有读到数据,当然卡死。界面可以按照一些串口软件来编写,例如格西烽火、串口调试助手等都不错。
C# SerialPort串口通讯控制道闸,发送数据有动作,但数据接收不到,Data...
设置好串口和比特率点击open,然后编辑内容发送.用下面的方法接收.private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { if (serialPort1.IsOpen) { StringBuilder strb = new StringBuilder(); byte[] l_byte = new by...
C# 串口通信 使用SerialPort类的DataReceived事件接收的数据不完整...
1.你可以在接收事件函数的开始位置延迟一段时间,根据数据长度的不同可以适当改变延迟的时间。2.根据你接收的数据格式可以使用不同的Read方法。ReadTo()方法是直到读到相应的字符为止,ReadLine()方法是读到一个新行,Read()读取缓冲区的字节数。希望对你有帮助。不懂的话可以继续问。
c#串口SerialPort接收数据不完整问题
原因:串口内部是用一个线程DataReceived触发事件,但它是不断触发的,界面收到通知的时候串口内部状态实际上可能已经发生变化。解决:自己建立一个byte或string的队列,拼接拆分(这就要求必须有自定义的终止符)
c# SerialPort通讯,使用多线程监听多个串口,在进行数据接收的过程中...
已经有线程把打开的端口关闭了,也可能是设备本身掉线了或者被移除了,所以这个handle不能用了,基本每个线程应该对应一个固定的端口,并且接收完成了应关闭并保持监听状态准备下一次接受,提前要知道接收内容的大小。还有格式要正确,二进制和文本模式是不同的 ...
C# 使用serialPort连接扫描枪,open时出现“连接系统上的设备没有发挥...
重新安装串口驱动程序,可能是由于驱动程序损坏或者过期导致的问题。在代码中加入异常处理机制,当连接失败时可以显示错误信息,从而方便排除问题。总之,在使用 SerialPort 连接扫描枪时,需要注意串口参数设置以及独占串口资源的问题,确保程序能够正常连接并接收扫描枪返回的数据。如果以上方法无法解决问题,建议...
c#中serialPort,发送一个命令过去,马上就有一个回应,怎样接收这个回应信 ...
serialPort控件的 DataReceived事件接收返回,它是在线程中完成的,串口必须是232的才有主动上传的,485的只有你发查询命令的时候才会有返回。
c#serialport很不稳定
c#serialport很不稳定是硬件上下载端口和调试打印端口用的同一个串口。mcu接收数据后的处理程序有问题。c#serialport很不稳定通讯出问题都是由于两次通讯间隔太短造成的,这样的情况一般都是这个原因,通讯失败不是本句造成的,和前后的代码有很大关系。
c#中serialPort 每发送一次接收一个返回值,要连续发送3次,如果直接...
用if判断语句和session来。方法:使用if判断你的值。取出相应的值。然后存入session.然后在取出三个session就行啦
C#SerialPort控件接收数据错误
通讯参数一致吗?波特率,校验等等。read有好多种方式,一定要采用字节方式读取。不妨把读出来的字节都与串口调试助手接到的十六进制转换的字节列出来看看。