請教下各位大佬,在方法A中,我系結了port.DataReceived事件,觸發事件后我獲取到了串口通信的值并轉化為 string a,我想在方法A中將a的值當作回傳值return要怎么寫?大概程序如下,新人對事件委托這些有點搞不清楚,麻煩大佬指點指點
public static stringA()
{
...........
port.Open();
port.DataReceived += Port_DataReceived;
return a; //此處希望能將a的值傳出
}
private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] portdata = new byte[10];
port.Read(portdata, 0, 10);
a = Encoding.UTF8.GetString(portdata);
}
uj5u.com熱心網友回復:
private SerialPort serialport = new SerialPort();private StringBuilder builder = new StringBuilder();
// private StringBuilder bs = new StringBuilder();//用于存盤一條完整資訊;
Boolean ope = false;
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] names = SerialPort.GetPortNames();
if (names == null)
{
MessageBox.Show("沒有可用的串口", "提示");
}
else
{
foreach (string str in names)
{
toolStripComboBox2_Potrs.Items.Add(str);
}
}
toolStripComboBox1_Rate.Text = "9600";
toolStripComboBox1_Rate.Items.Add("4800");
toolStripComboBox1_Rate.Items.Add("9600");
//添加事件注冊
serialport.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataRecived);
}
void serialPort_DataRecived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(500);
builder.Clear();//清除字串構造器的內容
string str = "";
int n = serialport.BytesToRead;//先記錄下來,避免丟失
label3.Text = n.ToString();
byte[] buf = new byte[n];
serialport.Read(buf, 0, n);//讀取緩沖區資料
this.Invoke((EventHandler)(delegate
{
if (checkBox1_Hex.Checked)
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
}
else
{
//直接以ASCII規則輸出
builder.Append(Encoding.ASCII.GetString(buf));
// bs.Append(Encoding.ASCII.GetString(buf));
}
//追加文本
this.textBox1_ReciMes.AppendText(builder.ToString());
//create a new thread
//;
Thread t = new Thread(new ParameterizedThreadStart(Options));
Console.WriteLine(builder.ToString());
t.Start(builder.ToString());
}));
}
uj5u.com熱心網友回復:
串口是通過異步接收資料的,你可以在接收方法里面使用委托將資料程式主執行緒uj5u.com熱心網友回復:
微軟用事件給你,你當然也可以用事件給外面。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/109158.html
標籤:C#
上一篇:“Microsoft.SqlServer.Smo, Version=9.0.242.0, Culture=neutral, PublicKeyToken=898
