OBD-ll ECU シミュレーター (リンク)である ECUsim 2000 と通信しようとしています。それでも、デバイスからの応答は常に「??」のようなものです。また "?" (TouchScan や OBD Auto Doctor などのプログラムを実行すると、データが正常に読み取られるため、デバイスは正常に動作します)。C#でコマンドを送信しています
serialPort1.Write("010D\r")
そして、SerialPortのDataReceivedイベントで信号を受信しています
message = "Data Received: " + serialPort1.ReadExisting();
this.Invoke(new EventHandler(displayText));
私は今、私が欠けているものを知りません。ここに完全なソースコードがあります
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM3";
serialPort1.BaudRate = 115200;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.DataBits = 8;
serialPort1.Handshake = System.IO.Ports.Handshake.None;
serialPort1.Open();
}
private void button1_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Write("010D\r");
}
}
private void displayText(object sender, EventArgs e)
{
textBox1.AppendText(message + "\n");
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
message = "Data Received: " + serialPort1.ReadExisting();
this.Invoke(new EventHandler(displayText));
}
ECUsim 2000 のデフォルトの通信設定は、
ボーレート: 115200 データ ビット: 8 パリティ: なし ストップ ビット:1
プロトコルは ISO 15765-4 で、デバイスにはプロトコル属性 CAN ID 29/11 ビットと CAN ボーレート 500 kbps/250kbps の 2 つのスイッチがあります。おそらく、問題はこれらに関連しており、適切な通信セットがありません。
別の質問 -> シリアル通信でプロトコル (ISO 15765-4 など) を設定する方法はありますか?