电子说
第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);
}
}
}
全部0条评论
快来发表一下你的评论吧 !