Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Serialization 在打印或发送到数据库之前,存储串行读取的字符数据_Serialization_Arduino_Hex_Buffer_Store - Fatal编程技术网

Serialization 在打印或发送到数据库之前,存储串行读取的字符数据

Serialization 在打印或发送到数据库之前,存储串行读取的字符数据,serialization,arduino,hex,buffer,store,Serialization,Arduino,Hex,Buffer,Store,我使用arduino将十六进制数据发送到外部硬件,并在读取卡时接收来自硬件的数据回复。 我发送的十六进制:BB 01 FF 00 01 15 16 7E 我收到的回复打印到序列号:BB 02 22 00 11 D0 34 14 00 00 00 24 12 11 62 77 69 EA 7E 如何存储首先接收到的全部数据,以便将全部数据/字符发送到数据库。 现在我只能发送收到的第一个数据(BB或0xbb) #包括“Arduino.h” #包括 #包括 软件串行(D5、D6); //#定义调试 无

我使用arduino将十六进制数据发送到外部硬件,并在读取卡时接收来自硬件的数据回复。 我发送的十六进制:BB 01 FF 00 01 15 16 7E 我收到的回复打印到序列号:BB 02 22 00 11 D0 34 14 00 00 00 24 12 11 62 77 69 EA 7E 如何存储首先接收到的全部数据,以便将全部数据/字符发送到数据库。 现在我只能发送收到的第一个数据(BB或0xbb)

#包括“Arduino.h”
#包括
#包括
软件串行(D5、D6);
//#定义调试
无符号字符输入字节;
void sendIdentificationCmd()
{
串行写入(0xbb);
串行写入((字节)0x00);
串行写入(0x22);
串行写入((字节)0x00);
串行写入((字节)0x00);
串行写入(0x22);
串行写入(0x7e);
#ifdef调试
串行打印(0xbb);
串行打印(0x00);
串行打印(0x22);
串行打印(0x00);
串行打印(0x00);
串行打印(0x22);
串行打印(0x7e);
Serial.println();
#恩迪夫
}
无效设置()
{
Serial.begin(115200);
serial.begin(115200);
Serial.println(“开始初始序列!\n”);
}
空循环()
{
sendIdentificationCmd();
延迟(2);
而(serial.available()>0)
{
incomingByte=serial.read();

如果(incomingByte您可以使用简单数组来存储收到的十六进制数据。当您收到足够的数据量时,您可以存储或打印它。
例如,可以使用100个十六进制数的容量启动数组,并增加变量以跟踪数组的当前索引。当索引即将达到100时,可以打印数组的内容或将其存储在数据库中。然后重复此过程。

我尝试了此代码,但它只打印“abc:2abc:5”你有什么线索吗?void循环(){sendIdentificationCmd();delay(2);while(serial.available()>0){incomingByte=serial.read();if(incomingByte 0){abc=serial.readbytesintil(0xFF,buffer,24);serial.print(“abc:”;serial.print(abc,HEX);}serial.println();delay(1000);}您希望SendIdentitofYCMD()在每次串行读取后执行还是只执行一次。
#include "Arduino.h"
#include <ESP8266WiFi.h>

#include <SoftwareSerial.h>
SoftwareSerial serial(D5,D6);

//#define DEBUG
unsigned char incomingByte;

void sendIdentifyCmd ()
{
  serial.write (0xbb);    
  serial.write ((byte)0x00);
  serial.write (0x22);  
  serial.write ((byte)0x00);                  
  serial.write ((byte)0x00);                  
  serial.write (0x22);
  serial.write (0x7e);              
#ifdef DEBUG
  Serial.print (0xbb);
  Serial.print (0x00);
  Serial.print (0x22);
  Serial.print (0x00);
  Serial.print (0x00);
  Serial.print (0x22);
  Serial.print (0x7e);
  Serial.println ();
#endif
}

void setup ()
{
  Serial.begin (115200);
  serial.begin (115200);
  Serial.println ("begin initial Serial!\n");
}

void loop ()
{
  sendIdentifyCmd ();
  delay (2);
  while(serial.available () > 0)
  {
      incomingByte=serial.read ();
      if (incomingByte <= 0x0F) Serial.print("0");
      Serial.print (incomingByte,HEX);
      Serial.print (' ');
      
  }
  Serial.println ();
  delay (1000);
}