我正在开发一个 WPF 应用程序来与 ELM327 交互。myApp 和 ELM327 之间的通信介质是 USB 协议。ELM327 通过 OBD 端口连接到车辆。我的应用程序能够成功建立 USB 通信。无论我从我的应用程序发送什么命令,我得到了什么?作为回复。我将波特率设置为9600。例如,我发送了ATZ,我得到了?作为回复。我发送了 010D,我收到了?我尝试使用该应用程序附带 ELM327,该应用程序可以成功提取数据。
MyApp USB 通讯连接代码:
public SerialPort sport;
private void Button_Click(object sender, RoutedEventArgs e)
{
int baudValue=0;
if (cbBaud.Text == null)
MessageBox.Show("select a baud rate");
else
{
if (cbBaud.Text != null)
{
baudValue = int.Parse(cbBaud.Text);
}
serialConnect(baudValue);
}
}
public void serialConnect(int baudRate)
{
try
{
if (tbCOM.Text != null)
{
sport = new System.IO.Ports.SerialPort(tbCOM.Text,
baudRate);
if (!sport.IsOpen)
{
sport.Open();
sport.DataReceived += new SerialDataReceivedEventHandler(serialDataReceived);
elIndicator.Fill = Brushes.Green;
}
else
{
MessageBox.Show("Connection already Opened");
}
}
}
catch(Exception EX)
{
MessageBox.Show("Connection Error");
}
}
MyApp数据发送代码:
private void BtSent_Click(object sender, RoutedEventArgs e)
{
try
{
sport.WriteLine(tbSend.Text);
}
catch(Exception EX)
{
MessageBox.Show("Write Error");
}
}
MyApp 数据接收代码:
private void serialDataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Dispatcher.Invoke((Action)(() =>
{
recData.Text = "\n";
recData.Text = System.Environment.NewLine + sport.ReadExisting();
}));
}
我必须发送任何初始化代码吗?