Modbusプロトコルでシリアルポートデバッグツールを使用してデータを受信することができます。SerialPortクラスのCardReaderからデータを受信できません
以下のパラメータは同じです。しかし、私はDataReceived
メソッドでブレークポイントを設定しましたが、決して遭遇しません。私のプログラムは以下の通りです:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestBalance
{
public partial class Form1 : Form
{
SerialPort sp;
public Form1()
{
InitializeComponent();
sp = new SerialPort("COM21", 9600, Parity.None, 8, StopBits.One);
sp.Open();
sp.ReceivedBytesThreshold = 1;
sp.RtsEnable = true;
sp.DtrEnable = true;
sp.DataReceived+=sp_DataReceived;
sp.Write("01 03 100b 0002 b109");
Thread.Sleep(200);
//string message= sp.ReadExisting();
//MessageBox.Show(message);
}
private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string message = sp.ReadLine();
MessageBox.Show(message);
}
}
}
フォームを使用すると、特にコンストラクタでスリープする必要はありません。 sleep()を削除します。 – jdweng
あなたが話しているデバイスはおそらく "01 03 100b 0002 b109"が何を意味するのか分かりません。代わりにWrite(byte []、int、int)オーバーロードを使用する必要があります。 –
@HansPassant彼は何らかの種類のEOLを必要とするかもしれません。私たちは彼のデバイスがどう働いているのか分かりません。 – Snoopy