您应该将侦听器附加到端口,如下所示: SerialPort port = new SerialPort("COM4", 9600); port.DataReceived += new SerialDataReceivedEventHandler(dataReceivedHandler); port.open();
SerialPort port = new SerialPort("COM4", 9600); port.DataReceived += new SerialDataReceivedEventHandler(dataReceivedHandler); port.open();
然后编写你的处理程序,如:
private void dataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Dispatcher.Invoke( delegate { textbox1.Text = indata; }); }
您的按钮单击也可以是这样的:
private void button1_click(object sender, RoutedEventArgs e) { try { port.Write("A"); } catch (Exception ex) { textbox.Text = " Send Failed !"; } }
试试这个:
功能:
Arduino代码:
const int LedPin = 13; int ledState = 0; void setup() { pinMode(LedPin, OUTPUT); Serial.begin(9600); } void loop() { char receiveVal; if(Serial.available() > 0) { receiveVal = Serial.read(); if(receiveVal == '1') ledState = 1; else ledState = 0; } digitalWrite(LedPin, ledState); delay(50); }
C#代码:
using System; using System.Windows.Forms; using System.IO.Ports; namespace ledcontrol { public partial class Form1 : Form { SerialPort port; public Form1() { InitializeComponent(); this.FormClosed += new FormClosedEventHandler(Form1_FormClosed); if (port==null) { port = new SerialPort("COM7", 9600);//Set your board COM port.Open(); } } void Form1_FormClosed(object sender,FormClosedEventArgs e) { if(port !=null &&port.IsOpen) { port.Close(); } } private void button1_Click(object sender, EventArgs e) { PortWrite("1"); } private void button2_Click(object sender, EventArgs e) { PortWrite("0"); } private void PortWrite(string message) { port.Write(message); } } }
你可以在这里看到教程: http://www.lattepanda.com/topic-f6t1534.html?sid=0aac1b4a519c7a2d970b81059e6e581f