Serialization 在打印或发送到数据库之前,存储串行读取的字符数据
我使用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)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.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);
}