C# C中的串口编程帮助#
最近,我想使用C#中的SerialPort类从串行端口连接和读取数据。我有一台来自Hundura的名为RTA600的考勤机。它通过串行到USB转换器连接到我的电脑。我测试的代码如下C# C中的串口编程帮助#,c#,serial-port,C#,Serial Port,最近,我想使用C#中的SerialPort类从串行端口连接和读取数据。我有一台来自Hundura的名为RTA600的考勤机。它通过串行到USB转换器连接到我的电脑。我测试的代码如下 SerialPort serialPort1 = new SerialPort(); serialPort1.PortName = "COM1"; serialPort1.BaudRate = 9600; serialPort1.Parity = System.IO.Ports.Parity.None; se
SerialPort serialPort1 = new SerialPort();
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.DataBits = 8;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Handshake = System.IO.Ports.Handshake.None;
serialPort1.RtsEnable = true;
// Open the Serial Port
serialPort1.Open();
// Read Data from Serial port
string RXstring = serialPort1.ReadLine();
我使用System.Io.Ports命名空间的SerialPort类。但是当执行serialPort1.ReadLine()时,代码会挂起。有人能告诉我如何通过串行到usb转换器从time machine读取数据吗?您可以使用
ReadExisting()
一次读取整个数据。
您需要处理DataReceived
事件的SerialPort
serialPort1.ReadExisting();
示例:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
String myData=serialPort1.ReadExisting();
}
示例代码:这里我想向您展示读取数据的代码(RFID标签代码,基本上长度为12)
ReadLine
语句将阻止代码,直到从设备接收到换行。正如下面答案中所建议的,请改用DataReceived
事件。
String macid = "";
private void DoWork()
{
Invoke(
new SetTextDeleg(machineExe ),
new object[] { macid });
macid = "";
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string str1;
macid += serialPort1.ReadExisting();
if (macid.Length == 12)
{
macid = macid.Substring(0, 10);
Thread t = new Thread(new ThreadStart(DoWork));
t.Start();
}
}
public void machineExe(string text)
{
TextBox1.Text=text;
}