USB ポートからデータを読み取り、受信時にテキスト ボックスに書き込みたい C# でプログラムを作成しています。RS-232 経由でデータ (PuTTY 経由で検証) を送信するマルチメーターがあり、232 を Prolific 2303 USB-Serial コンバーターに接続しています。デバイス マネージャーを使用して、これが COM4 であることを確認し、マルチメーターの仕様を調べて、ボー、ストップ ビット、パリティなどを見つけました。System.IO.Ports.SerialPort を使用して、シリアル ポートをセットアップしました。適切な COM 参照、ボーなどを持つオブジェクト。何らかの理由で、デリゲート関数が実行されないため、DataReceived イベントがトリガーされないようです。私が言ったように、私は PuTTY で見ることができるので、データが到着していることを知っています。以下は、誰かが私を助けてくれることを願って私のコードです... これで何が起こっているのかを理解するために、さらに情報が必要な場合はお知らせください。よろしくお願いします!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Reflection;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class dataAcquisitionMain : Form
{
string RxString;
public dataAcquisitionMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)//"Start" button
{
serialPort1.PortName = "COM4";
serialPort1.BaudRate = 2400;
serialPort1.Open();
if (serialPort1.IsOpen)
{
inputStream.ReadOnly = false; //A text box I want to put data into
startButton.Enabled = false;
stopButton.Enabled = true;
}
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialPort1.DataReceived += serialPort1_DataReceived;
RxString = serialPort1.ReadExisting();
this.Invoke((MethodInvoker)delegate{DisplayText();});
}
private void DisplayText()
{
textBox1.Text = "here";
inputStream.Text = RxString;
inputStream.AppendText(RxString);
}
private void dataAcquisitionMain_FormClosing(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
}
}