c# - 使用 arduino 读取从 C# 发送的字符串

标签 c# asp.net c

如果我仍在学习 C# 和 arduino 通信,我将不胜感激。我正在尝试接收从 C# 发送的 arduino 上的一些数据,但无法在串行监视器上看到发送数据。我想知道我如何接收发送数据。以下是我的代码:

C#:

protected void Button7_Click(object sender, EventArgs e)
        {
            {
                SerialPort comPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
                try
                {
                    comPort.Open();
                    comPort.Write(TextBox1.Text);
                    comPort.Write("Delete");
                    comPort.Close();
                }
                catch (UnauthorizedAccessException ex)
                {
                    Response.Write("Error:" + ex.ToString());
                }
                try
                {
                    OleDbConnection conn = new OleDbConnection("Provider= Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data\\Stock.mdb"));
                    conn.Open();
                   Int32 ash = Convert.ToInt32(TextBox1.Text);
                    string deleteQuery = "delete from Instock where ID= '" + ash + "'";
                    OleDbCommand com = new OleDbCommand(deleteQuery, conn);
                    com.ExecuteNonQuery();
                    Response.Write("Item deleted successfully");
                    Response.Redirect("UpdateDB.aspx");
                    conn.Close();
                }
                catch (Exception ex)
                {
                    Response.Write("Error:" + ex.ToString());
                }
            }
        }

Arduino:

#include <EEPROM.h>
#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);
int incoming;
int id;
int rea;
int comp=0;
void setup() {
  Serial.begin(9600);
  xbee.begin( 9600 );
 }

void loop() {
  if(Serial.available())
   {
     Serial.print("hhhh");
     id = Serial.read();
     incoming = Serial.read();
     if(id!='New')
     {
     xbee.println(id);
     xbee.println(incoming);
     EEPROM.write(id, incoming);
     rea = EEPROM.read(id);
     Serial.print(id);
    }
    else
     {
      EEPROM.write(comp, incoming);
      rea = EEPROM.read(id);
      Serial.print(id);
      comp+=1;
     }
   }
}

最佳答案

首先,我认为定义一种灵活且适合您的通信要求的消息格式非常重要(例如发送/接收具有不同数据类型的多个参数的命令等)。

幸运的是,已经有一个综合性的库,叫做 CmdMessenger ,它处理 Arduino 和 C# 应用程序之间的双向通信。库的使用很简单,有几个examples可以在网上找到。我认为很容易根据您的个人需求更改示例。

关于c# - 使用 arduino 读取从 C# 发送的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005776/

相关文章:

c# - 抽象类必须覆盖抽象方法?

C# - 在另一个方法中实现抽象或接口(interface)方法

c# - 多重性在关系 : EF code first one to one relationship with same primary key and foreign key 中的角色中无效

jquery - Rowcommand 没有为 gridview 中的 linkbutton 触发?

c# - 查看 ASP.NET MVC3 中的模型模式和用法(同时使用 EF 4.1)

使用三重指针创建矩阵会导致段错误

c - 如何为这种数据类型创建一个可变的 C 数组?

c# - 升级到 Web API 2 后,HttpApplication.Application_Start 未触发

javascript - 当内容未经编辑时,从 Summernote 表单中获取正确的 HTML

c - 在c中使用动态分配输入字符串列表