【已解决】 串口发16进制命令
本帖最后由 风生水起 于 2017-7-6 18:28 编辑感谢各位
解决方案
代码
unsigned char item = {0xFF,0x63, 0xFF,0x69, 0xFF,0x72, 0xFF,0x20, 0xFF,0x32, 0xFF,0x32, 0xFF,0x0D, 0xFF,0x0A};
void setup()
{
Serial.begin(9600);
}
void loop()
{
delay(5000);
for(int i=0 ; i<16;i++){
Serial.write(item);
}
}
另外,ARDUINO的板子上,不可以直接从TX RX接出串口线对设备,要有一个转换板 RS232转TTL模块2代 串口模块
------------------------------------------------------------------------------------------------------------------------------
下面是当时的问题
想用ARDUINO UNO 通过串口发送一段十六进制代码,控制一台HDMI二进一出切换器
这是切换器说明书的协议
这是用USB转串口,进行控制,测试有效
但是在ARDUINO里,怎么测试也不行了
主要是我C语言太弱
我编的代码就不往上贴啊,哪位大神能帮写段代码,感激不尽
void setup()
{
Serial.begin(9600);
unsigned char data = {0x63, 0x69, 0x72, 0x20, 0x32, 0x32, 0x0D, 0x0A};
}
void loop()
{
delay(5000);
for (int i = 0; i < 8; i++)
{
Serial.write(data);
}
} 本帖最后由 风生水起 于 2017-7-5 15:04 编辑
/*
模拟输入
在0号模拟插口读取一个模拟值,并输出。
created 24 March 2006 by Tom Igoe
*/
int analogValue = 0; // 需要保留的模拟值
void setup() {
//在9600 bps打开串行端口:
Serial.begin(9600);
}
void loop() {
// 在0号模拟输入插口读取值
analogValue = analogRead(0);
// 以多种格式输出
Serial.println(analogValue);
// 以ASCII编码十进制浮点值输出
Serial.print(analogValue, DEC);
// 以ASCII编码十进制浮点值输出
Serial.println(analogValue, HEX);
// 以ASCII编码十六进制输出
Serial.println(analogValue, OCT);
// 以ASCII编码八进制输出
Serial.println(analogValue, BIN);
// 以ASCII编码二进制输出
Serial.println(analogValue, BYTE);
// 以原始数据输出
// 在下次读取之前延迟10毫秒
delay(10);
参考这段例程,可是怎么弄串口输出的内容都对不上
主要是没基础
FF63 FF69 FF72 FF20 FF32 FF32 FF0D FF0A这段代码 已经是16进制了?还是需要再转成16进制? volatile char item;
void setup()
{
Serial.begin(9600);
item = "FF63 FF69 FF72 FF20 FF32 FF32 FF0D FF0A";
}
void loop()
{
Serial.println(item,HEX);
delay(1000);
} 非常感谢,报错了,我没查到怎么改才好,能再帮帮忙么 unsigned char data = {0x63, 0x69, 0x72, 0x20, 0x32, 0x32, 0x0D, 0x0A};
void setup()
{
Serial.begin(9600);
}
void loop()
{
delay(5000);
for (int i = 0; i < 8; i++)
{
Serial.write(data);
}
} :Q被你的案例带入坑了。。。声明应该在文件头 Ansifa 发表于 2017-7-5 19:04
被你的案例带入坑了。。。声明应该在文件头
原本就怕贴了我这笑话百出的程序被人笑话
不贴吧,又怕被大神认为我不动脑子,等现成的
再次感谢
这次编译通过了,但是串口输出
cir 22
我先连上设备看看,不行再请教
大神,还是不行啊,串口输出的是这样的,是不是还有问题
连上设备还是无法控制 风生水起 发表于 2017-7-5 19:15
原本就怕贴了我这笑话百出的程序被人笑话
不贴吧,又怕被大神认为我不动脑子,等现成的
再次感谢
:lol我就是看到写了一半方便才回的 Ansifa 发表于 2017-7-5 19:19
我就是看到写了一半方便才回的
继续求助:$ 本帖最后由 sailor0908 于 2017-7-6 13:34 编辑
协议要求的是16bit的命令,你发送的事8位,应该是不行的.改一点,用下面的笨办法试试.
unsigned char item = {0xFF,0x63, 0xFF,0x69, 0xFF,0x72, 0xFF,0x20, 0xFF,0x32, 0xFF,0x32, 0xFF,0x0D, 0xFF,0x0A};
for(int i=0 ; i<16;i++){
Serial.print(item,HEX);
} sailor0908 发表于 2017-7-6 12:20
协议要求的是16bit的命令,你发送的事8位,应该是不行的.改一点,用下面的笨办法试试.
非常感谢您的帮助,FF63 FF69。。。
这几个16进制,把我整蒙了,但是用串口助手,直接发FF63 FF69这些,显示的也只是63,我正在排查硬件问题 本帖最后由 风生水起 于 2017-7-6 15:07 编辑
sailor0908 发表于 2017-7-6 12:20
协议要求的是16bit的命令,你发送的事8位,应该是不行的.改一点,用下面的笨办法试试.
设备要求的是16进制 8位
标准是这样的 sailor0908 发表于 2017-7-6 12:20
协议要求的是16bit的命令,你发送的事8位,应该是不行的.改一点,用下面的笨办法试试.
按您的帮助,终于在串口助手看到一样的输出了
感谢各位
unsigned char item = {0xFF,0x63, 0xFF,0x69, 0xFF,0x72, 0xFF,0x20, 0xFF,0x32, 0xFF,0x32, 0xFF,0x0D, 0xFF,0x0A};
void setup()
{
Serial.begin(9600);
}
void loop()
{
delay(5000);
for(int i=0 ; i<16;i++){
Serial.write(item);
}
}
页:
[1]
2