如何使用C#form app将十六进制字符发送到串行端口?

问题描述 投票:0回答:2

我想通过COM端口发送十六进制。我已经手动准备了代码,但是用于字符串发送。

This is how application looks like currently

我需要从文本框中读取数据,然后以十六进制格式发送到COM端口。当前,我正在使用以下发送代码来处理按钮单击,但是当前它正在发送硬编码值,但是我需要从文本字段中获取这些值。

private void btnSendData_Click(object sender, EventArgs e) {
 if (serialPort1.IsOpen) { 
     dataOUT = tBoxDataOut.Text;
     if (sendWith == "WriteLine") { 
        serialPort1.WriteLine(dataOUT);
     } else if (sendWith == "Write") {
        serialPort1.Write(dataOUT);
     }
  }
}
c# serial-port format hex
2个回答
0
投票
enter image description here i.stack.imgur.com/LfKM5.png

0
投票
private void btnSendData_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { //dataOUT = tBoxDataOut.Text; int intVal = Int32.Parse(tBoxDataOut.Text); dataOUT = intVal.ToString("X"); if (sendWith == "WriteLine") { serialPort1.WriteLine(dataOUT); } else if (sendWith == "Write") { serialPort1.Write(dataOUT); } } }

我想提供一个简单的示例。我没有COM端口,但是com0com虚拟驱动程序可以很好地进行演示。您可以下载它here。我还使用Putty来显示端口接收的数据。您可以下载它here

这是我的程序:公共类HexConvert{SerialPort mySerialPort;

public HexConvert() { InitPort(); } void InitPort() { mySerialPort = new SerialPort("COM1"); mySerialPort.BaudRate = 9600; mySerialPort.Parity = Parity.None; mySerialPort.StopBits = StopBits.One; mySerialPort.DataBits = 8; mySerialPort.Handshake = Handshake.None; } public void SendMessage() { try { string s = "15"; // "F" In Hexadecimal int x = Int32.Parse(s); string s2 = x.ToString("X"); if(!mySerialPort.IsOpen) mySerialPort.Open(); mySerialPort.WriteLine(s2 + Environment.NewLine); mySerialPort.Close(); } catch(Exception ex) { Console.WriteLine(ex.Message); } } }

这是我的com0com实用程序的配置:

enter image description here

这是我的腻子配置:

enter image description here

最后,这是我的演示应用程序产生的输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.