第1步:創建一個新應用程序
打開Visual Studio并創建一個新的Windows窗體應用程序。然后,當出現表格1時,從SerialPort類開始添加任意數量的控件。
如果要將Arduino支持添加到預制程序中,則只需添加SerialPort類。如果您比較高級,則可能只想使用SerialPort庫制作一個普通的代碼文件,這樣就不必繼續對其進行定義。
步驟2:配置串行端口
唯一需要更改的是
-BaudRate(更改此項以匹配Arduino代碼(Serial.begin(這是您的波特率))
-端口名稱(編譯和上傳時,您需要選擇一個端口,通常以COM開頭)
-也許讀取緩沖區大小并寫入緩沖區
第3步:使用串行端口,只有在您打算讀取/寫入的數據量大于4096Bytes的讀取數據或向arduino寫入2048Bytes的數據時,此設置通常保持不變。代碼。
在按鈕上,或者單擊任何具有“事件”的控件時,只需雙擊該控件,它將顯示在代碼窗口中。這里有一些您可以在其中使用的代碼。如果語句相同!
大多數代碼是相似的;但是
Arduino代碼C#代碼
布爾布爾
unsigned any u any
random(新System.Random( ))。Next()
C#沒有時間選項,例如delay()delayMicroseconds()。
Other Stuff(在頂部?!)
serialPort1。打開(); -打開串行端口供您使用。如果端口已打開或端口不存在,將出現一個嚴重的錯誤。
serialPort1.BytesToRead-使用if語句將其與0進行比較。如果結果為false,則表示有可用的串行數據(if(serialPort1.BytesToRead == 0)與arduino if(Serial.available)相同)
與Arduino對話
serialPort1.Write( arg ); -告訴arduino,您要說的是 arg 。如果未打開端口,則將出現一個非常討厭的錯誤。
serialPort1.WriteLine( arg ); -與serialPort1.Write( arg )相同;但總是添加“ n”。
從Arduino讀取
string read = serialPort1.ReadTo( arg ); -讀取串行數據,直到找到 arg 中的文本,然后將其作為 read 返回。如果未打開端口,也會出現錯誤。
string 讀取 = serialPort1.ReadLine();-與serialPort1.ReadTo(“ n”)相同;
string read = serialPort1.ReadToEnd(); -繼續讀取直到沒有更多數據可讀取,然后以字符串 read 的形式返回。
步驟4:示例第1部分-C#Part
在兩個示例頁面上,我都附加了源代碼文件。要打開文件,請將文件解壓縮到您想要的任何位置,然后打開CS文件夾,然后雙擊.csproj文件。
我要有一個可更改RGB LED顏色的程序。 ,每次單擊按鈕時,我將需要在控件上使用一個按鈕,以及一個serialPort。
我將按鈕和串行端口添加到了表單中,然后調整按鈕的大小以適合它。
然后添加了一個串行端口,并將PortName更改為COM4。這可能與您的計算機有所不同。
然后我雙擊按鈕,將其更改為代碼視圖。在 button1_Click(對象發送者,EventArgs e)中,我添加了代碼(此代碼中有一些錯誤處理代碼。):
if(!serialPort1.IsOpen)
{
try
{結果serialPort1.Open();結果,serialPort1.Write( “T”);結果,serialPort1.Close();結果,}結果,趕上結果{結果的MessageBox。 Show(“發生錯誤。請確保選擇了正確的端口,并且已插入設備。”);
}
}
步驟5:示例第2部分-Arduino部分
在兩個示例頁面上,我都安裝了源代碼文件。要打開,請將文件解壓縮到所需的位置,然后打開Arduino編程環境,然后打開在Arduino文件夾和子文件夾下找到的文件。
已連接RGB LED到
RCo GB LED引腳
13 12 1110 Ardunino數字引腳
void setup()
{ pinMode(13,OUTPUT);
》 pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(11,LOW);
digitalWrite(13,HIGH);
}
int led = 1;
無效循環()
{
if(Serial.available())
{ switch( led)
{
案例1:led = 2;
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
break;
案例2:
led = 3;
digitalWrite(12,LOW);
digitalWrite(10,HIGH);
break;
情況3:
led = 1;
digitalWrite( 10,LOW);
digitalWrite(13,HIGH);
}
}
}
-
C#
+關注
關注
0文章
6瀏覽量
23865 -
Arduino
+關注
關注
188文章
6477瀏覽量
187589
發布評論請先 登錄
相關推薦
評論