导航:首页 > 程序命令 > 串口命令解析

串口命令解析

发布时间:2024-04-10 02:26:19

‘壹’ 串口数据解析

想山寨还是想逆向啊,呵呵。串口数据分析,一般的数据帧:帧头,帧长度,数据体,校验(可能不存在),帧尾(可能不存在)。帧头很多是0x02,或ASCII中的“:”,帧尾很多是0x03或0x0d0x0a(回车换行),校验方式一般有数据域累加,异或,计算CRC等,数据体就千奇百怪了,如果能看懂就看看,如果是加过密的,那你还是放弃吧

‘贰’ linux 查看某个串口参数(波特率,数据位等)命令什么

用CAT命令查看

#cat /proc/tty/driver/serial
如果需要配置串口参数,minicom是个很好的选择。

一、安装
sudo apt-get install minicom

二、配置

配置minicom的参数
运行$ sudo minicom -s
便进入了minicom的配置界面,使用上下键选择Serial port setup,回车。此时光标在“change which setting”后面停留,它的上面有如下菜单:

只需输入上面对应的字母,就可以进如相应的菜单进行设置。设置完成,回车,光标会回到“change which setting”后面,如此重复。完成按回车返回主菜单即可。

‘叁’ 串口RS-232发送代码问题

“商业软件”串口发送和接收数据,发送的只能是字符串型的代码,设备要收十六进制代码
答案:
1、分析
发送字符串型,实际是一个一个字符发送的,设备也是一个一个十六进制代码接受的。
应此,如果设备端要接收“55 01 01 02 01”这样5个字节的十六进制代码,软件端发送可以这样,
例如发送字符串变量是buff:
char *buff[10];
buff[0]=0x55;
buff[1]=0x01;
buff[2]=0x01;
buff[3]=0x02;
buff[4]=0x01;
不幸的是如果要发送“55 01 01 02 01 00 00 5a”这样8个字节的十六进制代码,由于里面含有十六进制00(即0x00),0x00字符表示是'\0',在字符串中表示的字符串结束。
看你运气了,如果程序的源代码中发送字符串模块,发送字符长度是通过判断字符串长度(strlen)来工作的,那你怎么也发送不出“55 01 01 02 01 00 00 5a”这样8个字节的十六进制代码,从上看出
buff[5]=0x00;buff[6]=0x00;buff[7]=0x5a;时,你的软件会认为字符串长度只有5。只会发送出“55 01 01 02 01”这样5个字节的十六进制代码。如果你的软件发送字符长度是根据你输入或设定的,那能正常发送“55 01 01 02 01 00 00 5a”这样8个字节的十六进制代码。
例如发送字符串变量是buff:
char *buff[10];
buff[0]=0x55;
buff[1]=0x01;
buff[2]=0x01;
buff[3]=0x02;
buff[4]=0x01;
buff[5]=0x00;
buff[6]=0x00;
buff[7]=0x5a;
2、解决办法(不该源代码的情况下)
做个中间件,需要用到PC的多个串口通道(串口不够用多串口卡扩展),系统接线也要调整,如果是1对1(一套软件对一个设备)
例如:软件是用com1口发送接收,原来是直接com1口接设备,现在改成,com1口接com2口,com2口同时也接设备(注意RS232是可以三线通讯的,PC端com1口的2脚接com2口的3脚,com2口的3脚接设备的2脚,PC端com1口的3脚接com2口的2脚,com2口的2脚接设备的3脚,PC端com1口的5脚接com2口的5脚,接设备的5脚),这样做的原理是通过com2口来正确发送给设备十六进制代码。并且com1向com2发送的命令需要修改。例如
要发送“55 01 01 02 01 00 00 5a”这样8个字节的十六进制代码,软件这端
发送字符串变量是buff:
char *buff[10];
buff[0]=0x55;
buff[1]=0x01;
buff[2]=0x01;
buff[3]=0x02;
buff[4]=0x01;
buff[5]=0xee;
buff[6]=0xff;
buff[7]=0xee;
buff[8]=0xff;
buff[9]=0x5a;
com2口中间件收到“55 01 01 02 01 ee ff ee ff 5a”这样10个字节的十六进制代码,他就会进行转换(0xee表示下个字节需要转码,转码方法是减去0xff,那0xff实际就是0x00。)这样通过中间件在com2口向设备发送“55 01 01 02 01 00 00 5a”这样8个字节的十六进制代码。
以上是发送,如果接收呢,同样看商业软件的接受机制,如果商业软件收到0x00,实际就是'\0',表示一个字符串接受终止,那么接收数据怎么整都不能正常收到“55 02 01 02 01 00 00 5a”这样8个字节的十六进制代码(含0x00),那么只有改写源代码一种方法。
3、后记
如果你的所谓商业软件要求别人改源代码不切实际,而且商业软件也不复杂,可以找人重写商业软件了,现在做软件外快的人太多了,拿公司软件稍微改改,时间用不了多少,费用也不高,几千吧

‘肆’ 如何查看linux下串口是否可用串口名称等

1、查看串口是否可用,可以对串口发送数据比如对com1口,echo lyjie126 > /dev/ttyS0

2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;

3、查看串口驱动:cat /proc/tty/drivers/serial

4、查看串口设备:dmesg | grep ttyS*

(4)串口命令解析扩展阅读

接口划分标准

同步串行接口(英文:SynchronousSerialInterface,SSI)是一种常用的工业用通信接口。。

异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。 TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。

串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

阅读全文

与串口命令解析相关的资料

热点内容
周转材料核算法 浏览:354
学nodejs还是php好 浏览:275
电信营业厅app怎么买q币 浏览:917
linux退出登陆 浏览:534
python查找相似图片的代码 浏览:334
赵丽pdf 浏览:659
如何苹果手机app不要自动更新 浏览:977
pythonflask路线教程 浏览:256
程序员职业有哪些好处 浏览:711
大都会软件app如何扫码 浏览:436
单片机0x38 浏览:756
程序员浪漫工作 浏览:329
php几分钟前 浏览:308
项目编译及运行 浏览:894
程序员的基本功 浏览:524
遗传算法排班 浏览:291
如何加密金融安全网 浏览:32
家里的wifi太卡了怎么样自己加密 浏览:235
华为链路聚合命令 浏览:427
apache自动运行php 浏览:521