1
私はGPSトラッカーとRFIDリーダーを持っています。 私はRFIDリーダーをRFIDリーダーに載せた後、最後のGPS位置を読んでいます。C#タスクの後に2つのSerialPortsからデータを読み込みます。
私のコードでは、GPS座標を永久に取得しています。私は2つのSerialPortsを持っています "gpsPort"と "rfidPort"。私はどのようにこの方法で2つのEventHandlerを中断するのか知りません。あなたは問題か何かのアイデアを解決できますか?ここで
は私のコードです:
class Program
{
static void Main(string[] args)
{
SerialPort gpsPort = new SerialPort("COM5");
gpsPort.BaudRate = 9600;
gpsPort.Parity = Parity.None;
gpsPort.StopBits = StopBits.One;
gpsPort.DataBits = 8;
gpsPort.Handshake = Handshake.None;
gpsPort.RtsEnable = true;
gpsPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
gpsPort.Open();
SerialPort rfidPort = new SerialPort("COM4");
rfidPort.BaudRate = 9600;
rfidPort.Parity = Parity.None;
rfidPort.StopBits = StopBits.One;
rfidPort.DataBits = 8;
rfidPort.Handshake = Handshake.None;
rfidPort.RtsEnable = true;
rfidPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler2);
rfidPort.Open();
Console.ReadKey();
}
public static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
if (indata.Contains("GPRMC"))
{
string[] sentence = indata.Split(',');
string latitude = sentence[3].Substring(0, 2) + "°";
latitude = latitude + sentence[3].Substring(2);
latitude = latitude + sentence[4];
string longitude = sentence[5].Substring(2, 1) + "°";
longitude = longitude + sentence[5].Substring(3);
longitude = longitude + sentence[6];
Console.Write("Latitude:" + latitude + Environment.NewLine + "Longitude:" + longitude + Environment.NewLine + Environment.NewLine);
}
}
public static void DataReceivedHandler2(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.Write(indata + Environment.NewLine);
}
}
は、それが動作ありがとう);あなたはGPS
何かを中断する必要はありません知りません!しかし、私はコンソールの最後のGPSデータから毎回2つのタグを取得します。あなたは今なぜですか? –
@ hx_9009私は本当に知らない。あなたのコードがどのように正確に見えるかはわかりません。両方の 'DataReceived'イベントに' Console.Write'がありますか? –
には、DataReceivedHandler2にConsole.Writeが1つしかありませんでした。 Iamが最初にアプリケーションを起動するとき、タグは1つしかありません。しかし、私は常に2つのタグ –