第1步:創(chuàng)建一個新應(yīng)用程序
打開Visual Studio并創(chuàng)建一個新的Windows窗體應(yīng)用程序。然后,當出現(xiàn)表格1時,從SerialPort類開始添加任意數(shù)量的控件。
如果要將Arduino支持添加到預(yù)制程序中,則只需添加SerialPort類。如果您比較高級,則可能只想使用SerialPort庫制作一個普通的代碼文件,這樣就不必繼續(xù)對其進行定義。
步驟2:配置串行端口
唯一需要更改的是
-BaudRate(更改此項以匹配Arduino代碼(Serial.begin(這是您的波特率))
-端口名稱(編譯和上傳時,您需要選擇一個端口,通常以COM開頭)
-也許讀取緩沖區(qū)大小并寫入緩沖區(qū)
第3步:使用串行端口,只有在您打算讀取/寫入的數(shù)據(jù)量大于4096Bytes的讀取數(shù)據(jù)或向arduino寫入2048Bytes的數(shù)據(jù)時,此設(shè)置通常保持不變。代碼。
在按鈕上,或者單擊任何具有“事件”的控件時,只需雙擊該控件,它將顯示在代碼窗口中。這里有一些您可以在其中使用的代碼。如果語句相同!
大多數(shù)代碼是相似的;但是
Arduino代碼C#代碼
布爾布爾
unsigned any u any
random(新System.Random( ))。Next()
C#沒有時間選項,例如delay()delayMicroseconds()。
Other Stuff(在頂部?!)
serialPort1。打開(); -打開串行端口供您使用。如果端口已打開或端口不存在,將出現(xiàn)一個嚴重的錯誤。
serialPort1.BytesToRead-使用if語句將其與0進行比較。如果結(jié)果為false,則表示有可用的串行數(shù)據(jù)(if(serialPort1.BytesToRead == 0)與arduino if(Serial.available)相同)
與Arduino對話
serialPort1.Write( arg ); -告訴arduino,您要說的是 arg 。如果未打開端口,則將出現(xiàn)一個非常討厭的錯誤。
serialPort1.WriteLine( arg ); -與serialPort1.Write( arg )相同;但總是添加“ n”。
從Arduino讀取
string read = serialPort1.ReadTo( arg ); -讀取串行數(shù)據(jù),直到找到 arg 中的文本,然后將其作為 read 返回。如果未打開端口,也會出現(xiàn)錯誤。
string 讀取 = serialPort1.ReadLine();-與serialPort1.ReadTo(“ n”)相同;
string read = serialPort1.ReadToEnd(); -繼續(xù)讀取直到?jīng)]有更多數(shù)據(jù)可讀取,然后以字符串 read 的形式返回。
步驟4:示例第1部分-C#Part
在兩個示例頁面上,我都附加了源代碼文件。要打開文件,請將文件解壓縮到您想要的任何位置,然后打開CS文件夾,然后雙擊.csproj文件。
我要有一個可更改RGB LED顏色的程序。 ,每次單擊按鈕時,我將需要在控件上使用一個按鈕,以及一個serialPort。
我將按鈕和串行端口添加到了表單中,然后調(diào)整按鈕的大小以適合它。
然后添加了一個串行端口,并將PortName更改為COM4。這可能與您的計算機有所不同。
然后我雙擊按鈕,將其更改為代碼視圖。在 button1_Click(對象發(fā)送者,EventArgs e)中,我添加了代碼(此代碼中有一些錯誤處理代碼。):
if(!serialPort1.IsOpen)
{
try
{結(jié)果serialPort1.Open();結(jié)果,serialPort1.Write( “T”);結(jié)果,serialPort1.Close();結(jié)果,}結(jié)果,趕上結(jié)果{結(jié)果的MessageBox。 Show(“發(fā)生錯誤。請確保選擇了正確的端口,并且已插入設(shè)備。”);
}
}
步驟5:示例第2部分-Arduino部分
在兩個示例頁面上,我都安裝了源代碼文件。要打開,請將文件解壓縮到所需的位置,然后打開Arduino編程環(huán)境,然后打開在Arduino文件夾和子文件夾下找到的文件。
已連接RGB LED到
RCo GB LED引腳
13 12 1110 Ardunino數(shù)字引腳
void setup()
{ pinMode(13,OUTPUT);
》 pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(11,LOW);
digitalWrite(13,HIGH);
}
int led = 1;
無效循環(huán)()
{
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#
+關(guān)注
關(guān)注
0文章
6瀏覽量
23870 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187873
發(fā)布評論請先 登錄
相關(guān)推薦
C#中使用OpenVINO?:輕松集成AI模型!
![<b class='flag-5'>C#</b>中使用OpenVINO?:輕松集成AI模型!](https://file1.elecfans.com/web3/M00/07/65/wKgZPGelodyAIemyAAGZkiKiUys008.png)
液顯ID讀卡器C#小程序開發(fā)
![液顯ID讀卡器<b class='flag-5'>C#</b>小<b class='flag-5'>程序</b>開發(fā)](https://file1.elecfans.com/web3/M00/05/85/wKgZPGeAw16AYHH-AAPCP23Pv_M129.png)
多個TLV320AIC3254用一路I2C總線對其配置可行嗎?
OPA735加OPA333,怎樣用TINA TI去仿真?
用Arduino放回了一個空的schetch,重新打開了程序不斷重啟的原因?
求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?
stm32f100怎樣用重映射功能?
STM32F412G-DISCO怎樣用MX生成fatfs的代碼?
如何將HC-SR04連接到Arduino并編寫一個簡單的程序來測量距離
![如何將HC-SR04<b class='flag-5'>連接</b>到<b class='flag-5'>Arduino</b>并編寫一個簡單的<b class='flag-5'>程序</b>來測量距離](https://file1.elecfans.com/web2/M00/BD/9A/wKgZomWsflaANt1SAADQJs8FUT4796.png)
如何將增量旋轉(zhuǎn)編碼器與Arduino連接
![如何將增量旋轉(zhuǎn)編碼器與<b class='flag-5'>Arduino</b><b class='flag-5'>連接</b>](https://file1.elecfans.com/web2/M00/BE/85/wKgaomWsepSAWIAfAABv5e2I5S8036.png)
評論