我想通过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);
}
}
}
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实用程序的配置:
这是我的腻子配置:
最后,这是我的演示应用程序产生的输出: