|
各位大神,我是刚学Arduino Uno 这个板 我现在只能通过这个板给门禁控制器下发开门指令
Arduino 通过软串口定义,接TTL转232转换板,然后接门禁控制232口上,连接正常,串口助手下发开门指令是有效的,但不能通过Arduino下发指令,利用串口监视软件发现问题如下:
板子不能一次性把指令全部下发,导致无法开门,在网上找了各种相关贴子,还是不能解决我这个问题,还请各位大神帮忙看看,该如何操作才行。
这是板子通过串口发给硬件门禁板时的情况 指令是断断续续的 我用 uint8_t buffer[] = "7E 80 00 01 00 00 80 AA 00 01 01 00 DE 62 7E"; 这样保存的
这是Arduino 下发开门指令后的情况图
计算机通过串口助手发给硬件门禁板的情况 指一是一次性全发过去
这是串口助手下发同样指令的图
相关测试代码如下(注释那部分不用看了 是我测试看行不行的通,见笑~~):
- #include <SoftwareSerial.h>
- #include <Wire.h>
- //uint8_t tmp1 = "7E800001000080AA00010100DE627E";
- char tmp2[] = "7E 80 00 01 00 00 80 AA 00 01 01 00 DE 62 7E";
- char tmp3[] = "0x7E,0x80,0x00,0x01,0x00,0x00,0x80,0xAA,0x00,0x01,0x01,0x00,0xDE,0x62,0x7E";
- //uint8_t buffer1[] = "7E800001000080AA00010100DE627E";
- uint8_t buffer[] = "7E 80 00 01 00 00 80 AA 00 01 01 00 DE 62 7E";
- const int digitalPin = 7;
- //uint8_t buffer[] = "0x7E,0x80,0x00,0x01,0x00,0x00,0x80,0xAA,0x00,0x01,0x01,0x00,0xDE,0x62,0x7E";
- int i,j,k;
-
- SoftwareSerial serial(6, 7);
- void hexprintf(char tmp[16])
- {
- j=strlen(tmp);
- for(i=0;i<j;i++)
- {
- serial.print(tmp[i],HEX);
- }
- serial.println("");
- }
- void setup() {
- serial.begin(19200);
- Wire.begin();
- delay(1000);
- }
- void loop() {
-
- serial.write(buffer,44);//write 44 必须放前面执行
- delay(2000);
- /*
- serial.write(buffer1,30);//write 44 必须放前面执行
- delay(2000);
- serial.write(tmp1);//hexprintf
- delay(2000);
- serial.write(tmp2,44);
- delay(2000);
- serial.write(tmp3,74);
- delay(2000);
- */
-
- /*
- serial.write(0x7E);
- serial.write(0x80);
- serial.write(j);
- serial.write(0x01);
- serial.write((byte)0x00);
- serial.write((byte)0x00);
- serial.write(0x80);
- serial.write(0xAA);
- serial.write((byte)0x00);
- serial.write(0x01);
- serial.write(0x01);
- serial.write(j);
- serial.write(0xDE);
- serial.write(0x62);
- serial.write(0x7E);
- delay(1000);
- */
-
- }
复制代码
|
|