大家好,想请教一个问题,就是刚买了一个激光测距传感器,是串口传递数据的,给了一些指令,请问怎么传递指令控制传感器工作并传回值呢?下图是指令
你可以做一个数据,将你的命令内容做成固定的,这样,你调用起来是很方便的。
如:
char cmd[][20]={
"$00022123&",
"$0003260130&",
"$00022426&",
"$0003260029&",
......
};
你的命令数组的偏移可以使用宏定义。如:
#define startonce 0
#define open 1
那么你使用串口写的时候可以写成cmd[startonce ],简洁方便。
至于回传的值,这个手册上一定有通讯格式,回传数据的含意了。
先打开串口,按传感器设置波特率。
然后就给模块发字符串指令,开启连续测量,然后就不断地把模块发来的字符串赋值到一个char buf[]缓冲数组,再解析数据。
缓冲数组的大小按需要设,设小了字符收不全,设大了浪费内存空间
先找个串口调试助手,然后用串口线把模块接到电脑上,用助手发送这些指令。如果有反应说明指令发送成功了。
看这个指令说明,应该用字符形式发送,而不是十六进制。
这个表格的意思是,通过串口将这么一串字符传送给模块之后模块就会进行相应的动作
因此这里需要先开灯,然后接收到确认的指令之后,启动单次测量,然后读取串口得到的数据,应该是16进制的内容,然后怎么转换成我们看得懂的内容需要进一步看资料
廠商沒有附送範例資料給您嗎XD,這樣您還會買?
簡單的方式就是先用各種Serial console測試各種指令
其實跟AT指令大同小異
將要用的指令建立好
char cmd[]={"....."}; //....,依照您需要的指令導入TxBuffer內進行傳送
char cmd[]={"....."}; //....,依照您需要的指令
因為不知道您是用哪顆MCU,這是概念做法,依照MCU會稍有不同
以上供參考