Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SIM800L从c#向arduino发送数据时出现问题_C#_C_Arduino_Sim800 - Fatal编程技术网

SIM800L从c#向arduino发送数据时出现问题

SIM800L从c#向arduino发送数据时出现问题,c#,c,arduino,sim800,C#,C,Arduino,Sim800,我想我的密码漏掉了什么 下面是我的C代码# 下面是我在Arduino中使用GSM模块SIM800L发送数据的代码 #include <SoftwareSerial.h> //SIM800 TX is connected to Arduino D8 #define SIM800_TX_PIN 8 //SIM800 RX is connected to Arduino D7 #define SIM800_RX_PIN 7 //Create software serial o

我想我的密码漏掉了什么

下面是我的C代码#

下面是我在Arduino中使用GSM模块SIM800L发送数据的代码

    #include <SoftwareSerial.h>

//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8

//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7

//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

void setup() {
  //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  while(!Serial);

  //Being serial communication with Arduino and SIM800
  serialSIM800.begin(9600);
  delay(1000);

  //Set SMS format to ASCII
  serialSIM800.write("AT+CMGF=1\r\n");
  delay(1000);

  //getting the number  
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);



  //Send new SMS command and message number      
  serialSIM800.print("AT+CMGS=\"");
  serialSIM800.print(remoteNum);
  serialSIM800.print("\"\r\n");  
  delay(1000);

   // getting sms text  
  char txtMsg[200];
  readSerial(txtMsg); 

  //Send SMS content
  serialSIM800.print(txtMsg);  
  delay(1000);

  //Send Ctrl+Z / ESC to denote SMS message is complete
  serialSIM800.write((char)26);
  delay(1000);

  Serial.println("SMS Sent!");
}

 /*
  Read input serial
 */
char readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}
void loop() {
}
#包括
//SIM800 TX连接到Arduino D8
#定义SIM800_TX_引脚8
//SIM800 RX连接到Arduino D7
#定义SIM800_RX_引脚7
//创建与SIM800通信的软件串行对象
软件串行串行SIM800(SIM800_TX_引脚、SIM800_RX_引脚);
无效设置(){
//开始与Arduino和Arduino IDE(串行监视器)的串行通信
Serial.begin(9600);
而(!串行);
//与Arduino和SIM800进行串行通信
serialSIM800.begin(9600);
延迟(1000);
//将SMS格式设置为ASCII
serialSIM800.write(“AT+CMGF=1\r\n”);
延迟(1000);
//获取号码
char remoteNum[20];//发送短信的电话号码
readSerial(remoteNum);
//发送新的SMS命令和消息号码
serialSIM800.print(“AT+CMGS=\”);
serialSIM800.print(remoteNum);
serialSIM800.print(“\”\r\n”);
延迟(1000);
//获取短信
char-txtMsg[200];
readSerial(txtMsg);
//发送短信内容
serialSIM800.print(txtMsg);
延迟(1000);
//发送Ctrl+Z/ESC以表示SMS消息已完成
serialSIM800.write((char)26);
延迟(1000);
Serial.println(“SMS已发送!”);
}
/*
读输入串行
*/
char readSerial(char结果[]){
int i=0;
而(1){
while(Serial.available()>0){
char inChar=Serial.read();
如果(英寸=='\n'){
结果[i]='\0';
Serial.flush();
返回0;
}
如果(英寸!='\r'){
结果[i]=英寸;
i++;
}
}
}
}
void循环(){
}
我的困惑/问题是

每当我在Arduino中使用串行监视器进行测试时,Arduino中的代码都会成功地向手机号码发送消息。但当我在Visual Studio中使用C#使用表单时,什么也不会发生。也没有出现任何错误。我试着F11也知道我是否错过了一个错误,但我还是什么也看不到。但应用程序不会向该号码发送短信


非常感谢你们的帮助。提前感谢您。

解决方案简单明了。您的所有例程都在Arduino设置中,该设置只运行一次。因此,从Arduino直接发送一条短消息正好可以工作一次。
当通过c代码连接时,Arduino已经启动并处于空循环中。因此,命中一次性运行代码的机会为零。
特别注意你的日常活动

   readSerial(remoteNum);

在循环中,它应该按预期工作。

在使用Visual Studio发送命令之前,您应该做的第一件事是正确配置串行端口,您只需关闭串行端口循环,您发送的所有内容都应该接收,如果您没有接收到任何内容,您的串行端口配置有问题

   readSerial(remoteNum);