gpt4 book ai didi

vb.net - 如何通过 RF-433 模块从 VB 应用程序和 arduino 发送数据

转载 作者:行者123 更新时间:2023-12-02 05:59:00 27 4
gpt4 key购买 nike

我有点困惑。我已经编写了 VB 代码来打开和关闭连接到 Arduino 的 LED。我通过 COM 端口(而不是串行监视器)从 VB 应用程序发送数据,数据为“1”表示 LED 打开,“0”表示关闭。这里我想通过RF-433模块发送这个信号。我已将 Arduino 的 TX 引脚连接到 RF 模块的数据引脚。另一方面,第二个Arduino通过引脚12上的LED连接到RF接收器。现在我不知道如何为TX侧的Arduino编写代码以通过RF发送数据?我的意思是,如果我使用串行监视器发送数据,则可以使用 Serial.available()Serial.read() 借助键盘通过串行监视器发送数据,但我在这里从 VB 应用程序发送该数据。那么Arduino激活连接在Arduino TX引脚上的RF TX的代码是什么呢?

这是我的 VB 代码:

Imports System.IO
Imports System.IO.Ports
Imports System.Threading

Public Class Form1

Shared _continue As Boolean
Shared _serialPort As SerialPort

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com12" 'change com port to match your Arduino port
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default 'very important!
End Sub

Private Sub btnOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOn.Click
picOn.Visible = True
SerialPort1.Open()
SerialPort1.Write("1")
SerialPort1.Close()
End Sub

Private Sub btnOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff.Click
picOn.Visible = False
SerialPort1.Open()
SerialPort1.Write("0")
SerialPort1.Close()
End Sub
End Class

最佳答案

嗯...终于做到了...以下代码运行成功。我使用 SoftwareSerial 库。 Tx代码简单,无需任何库即可实现。我只是从 arduino 的 RX 引脚上的 VB 应用程序获取数据,并将其发送到连接 RF 模块的 arduino 的 TX。接收器需要软件串行库。

发送代码:

  1. 没有库。

    (无库)

        int inByte;
    void setup()
    {
    Serial.begin(2400);
    }
    void loop()
    {
    if(Serial.available()>0)
    {
    inByte=Serial.read();
    switch(inByte)
    {
    case '0':
    Serial.write(inByte);
    break;
    case '1':
    Serial.write(inByte);
    break;
    default:
    break;
    delay(100);
    }
    }
    }
  2. 带图书馆。

    #include <SoftwareSerial.h>
    #define rxPin 10
    #define txPin 11
    SoftwareSerial mySerial(10,11); //RX & TX
    int ch;

    void setup()
    {
    pinMode(rxPin,INPUT);
    pinMode(txPin,OUTPUT);
    Serial.begin(9600);
    //Serial.println("Hi");

    mySerial.begin(2400);
    //mySerial.println("Hello");
    }
    void loop()
    {
    if(Serial.available()>0)
    {
    ch=Serial.read();
    mySerial.write(ch);
    }
    }

接收代码:

 #include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
SoftwareSerial mySerial(10,11); //RX & TX
int ch=0;

void setup()
{
pinMode(rxPin,INPUT);
pinMode(13,OUTPUT);
//pinMode(txPin,OUTPUT);
Serial.begin(9600);
//Serial.println("Hi");

mySerial.begin(2400);
//mySerial.println("Hello");
}
void loop()
{
if(mySerial.available()>0)
{
ch=mySerial.read();
//Serial.write(ch);
switch(ch)
{
case '0':
digitalWrite(13,LOW);
break;
case '1':
digitalWrite(13,HIGH);
break;

default:
break;
}
}
}

顺便说一句,非常感谢@Yve 的指导以及您为我完成此代码所花费的时间...:) 实现。

关于vb.net - 如何通过 RF-433 模块从 VB 应用程序和 arduino 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com