123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //https://blog.csdn.net/luyang14/article/details/115796909
- #include <HardwareSerial.h>
- // 定义串口对象Serial2
- HardwareSerial Serial2(1);
- #define PIN_RX 1
- #define PIN_TX 0
- #define PIN_BUTTON 2
- String qrData = "";
- int qrType=0;
- String qrOpen = "c:...";
- String qrEnd = "c:end";
- // 串口2接收中断服务程序
- void serialEvent() {
- while (Serial2.available() > 0) {
- if(qrType==0)qrData = "";
- qrType = 1;
-
- char incomingByte = Serial2.read();
- qrData += (char)incomingByte;
- }
- if(qrType==1){
- Serial.println("qrData: " + qrData);
- String str = "c:" + qrData;
- pCharacteristic->setValue(str.c_str());
- digitalWrite(PIN_BUTTON,HIGH); //这里扫码成功后需要你自己拉高电频 不然扫码成功后返回数据你再次拉低失败的
- qrType = 0;
- }
- }
- void qrCommand(){
- String command = pCharacteristic->getValue().c_str();
- if (command.startsWith("2:0")) {
- pCharacteristic->setValue(qrOpen.c_str());
- digitalWrite(PIN_BUTTON,LOW);
- } else if (command.startsWith("2:1")) {
- pCharacteristic->setValue(qrEnd.c_str());
- digitalWrite(PIN_BUTTON,HIGH);
- }
-
- }
- void qrSetup(){
- Serial2.begin(9600, SERIAL_8N1,PIN_RX,PIN_TX); // 设置串口的波特率、1数据位、奇偶校验位和停止位
- pinMode(PIN_BUTTON,OUTPUT);//设置引脚为输出
- digitalWrite(PIN_BUTTON,HIGH);//高电平关
- // digitalWrite(PIN_BUTTON,LOW);//低电平开
-
- }
- int loopQrSize=1000; //loop间隔
- int qrMillisTime;
- void qrLoop(){
- //1秒读取一次指令
- int qrTimeCurrent = millis();
-
- if(qrTimeCurrent<=0)qrMillisTime = qrTimeCurrent;
- if((qrTimeCurrent - qrMillisTime)>loopQrSize){
- qrMillisTime = qrTimeCurrent;
- qrCommand();
- serialEvent();
- }
- }
|