‧前言:藉由 How to interface the Arduino with C# 這篇教學範例,記述其操作步驟。
感謝原作者,Thanks John。
‧目的:由 C# 經 RS-232 傳輸字串至 Arduino,再由 Arduino 回傳到 C# 顯示。
‧主要工具:
- Arduino UNO x 1
- Visual C# 2010 Express (Google搜尋下載試用)
‧參考資料:
- Visual C#2010 精要剖析
- Interacting with the Arduino with C# <<原文請點選
‧流程說明:
1. 於Arduino撰寫程式,功能為接收來自 C# 的資料,再回傳出去。
2. 啟動 Visual C# 2010 Express - 新增專案 - Windows Form 應用程式。
3. 新增控制項,包括:
- Label 控制項 x 2
- comboBox 控制項 x 2
- button 控制項 x 4
- textBox 控制項 x 2
- serialPort 控制項 x 1
4. 設定各控制項之屬性,如圖:
5. 加入程式碼:
5.1. 提供選取通訊埠和傳輸速率,在 InitializeComponent(); 後加入設定通訊參數之程式碼:
5.2. 在 btnStart "開始" 按鈕上點選兩下,於 Click 事件處理程序中加入啟動通訊之程式碼:
5.3. 在 btnStop "結束" 按鈕上點選兩下,於 Click 事件中加入停止通訊之程式碼:
5.4. 在 btnSend "傳送" 按鈕上點選兩下,於 Click 事件中加入傳送資料之程式碼:
5.5. 先點選 serialPort1,在屬性視窗的事件(閃電圖示)中,DataReceived事件上點選兩下,即在 DataReceived 事件處理程序中,與事件前加入通訊埠處理資料之程式碼:
5.6. 在 btnClear "清除" 按鈕上點選兩下,於 Click 事件中加入清除資料之程式碼:
6. 裝置連線:
7. 預期結果:
感謝教學!
回覆刪除如果想把傳送左既MESSAGE RESET 應該點做
我想係C# INPUT 1 LED 燈ON 唔係1 LED OFF
input 第一次 1 LED ON
但當再INPUT 2 時LED 依然ON
可以解決嗎????
int led=13;
int a=0;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT); //RS232初始化設定傳輸速率(BaudRate)9600bps
}
void loop()
{
//當有接收到資料時
a=Serial.read();
while(Serial.available())
{ //當有接收到資料時
Serial.write(Serial.read()); //讀取資料,再回傳寫出去
a=Serial.read();
if(a=1)
{
digitalWrite(13, HIGH);
}
if(a!=1)
{
digitalWrite(13, LOW);
}
}
也有遇過相似的問題,如果把DigitalWrite的第13接腳,接到analog監控,就可發現值會飄移。
刪除試試把3.3V接AREF看看。
為什麼txtOuput會找不到 沒辦法輸出 發生錯誤
回覆刪除發生 System.UnauthorizedAccessException
回覆刪除HResult=-2147024891
Message=拒絕存取通訊埠 'COM5'。
Source=System
StackTrace:
於 System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
於 System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
於 System.IO.Ports.SerialPort.Open()
於 test.Form1.btnStart_Click(Object sender, EventArgs e) 於 c:\users\sugar\documents\visual studio 2015\Projects\test\test\Form1.cs: 行 56
InnerException:
請求協助~謝謝您