• 串口测试工具

    基本串口设置 串口设置:选择使用的串口号,可以通过“查找” 按钮自动查询当前系统可用串口。 波特率设置:输入将要使用波特率。 检验位设置:O=ODD=奇校验,E=EVEN=偶检验,N=无校验 10/16进制选择:当勾选后,接收缓冲区将以16进制数据格式显示,发送缓冲区数据必须是16进制格式,点击“发送”按钮时,将以16进制格式发送。否则(未勾选时),将以发送缓冲区将ASCII码的形式显示,点击“发送”按钮时,将以ASCII码直接发送。 打开串口:按配置打开相应串口,同时使能其他可能使用串口的按钮,再次点击则失能其他可能使用串口的按钮(如果未打开串口点击串口发送相关按钮会出现异常,另,修改串口基本设置后需要重新打开串口一次才会生效)。 帮助:即打开本文档 其他:略 简单通讯协议 界面操作说明 本协议将每帧数据数据分为帧头H,帧长L,参数P,数据D,校验C,帧尾E这6大部分,其中每个字段是否使用和使用的字节长度均可以选择或设置。帧格式设定: 帧头H字段:以16进制直接写入,软件自动计算帧头所占字节数,将存入变量H1、H2、H3……的格式中。 帧长L字段:以16进制直接写入,设置帧长所占字节,然后软件自动计算帧长,并将存入变量L1、L2、L3……的格式中。 参数P字段:以16进制直接写入,软件自动计算参数所占字节数,将存入变量P1、P2、P3……格式中。 数据D字段:这里只选择数据所占的字节数,数据的内容在后面的Dt框中填入,并将数据存入到变量Dt中。 校验C字段:这里只选择校验所占的字节数,校验的方式按后面的公式计算而来。C1、C2、C3…… 帧尾E字段:以16进制直接写入,软件自动计算帧尾所占字节数,将存入变量E1、E2、E3……格式中。 公式说明的使用方法 变量:上述字段中的H1、H2、H3……、L1、L2、L3……、P1、P2、P3……、Dt、C1、C2、C3……、E1、E2、E3……即为公式的变量名称; 立即数:操作立即数以2位16进制数,立即数中的字母必须小写。 操作符:目前只支持+(加)、-(减)、*(乘)、/(除)、&(与)、|(或)、~(非)、^(异或)、@(循环)操作,其中~(非)操作的前面变量或立即数无效; 结果变量:公式的结果存入到F1、F2、F3……变量中,同时可以供下一个公式可以使用; 结束符:整个公式以’;’号结尾,最后一次使用的结果变量将成为最终的运算结果投入到串口帧的使用; 注意: 操作符与结束符占1字节,其余均为2字节,整个公式必须有9字节并严格按照格式进行输入,否则软件无法正确识别; 变量名必须大写,16进制数必须小写,变量名只支持上述字段中的名称且序号不得超过10个,否则会出错; 中间不能插入空格; 举例:比如,在Dt字符框中输入100; 执行F1=Dt+00;F2=F1+00;表示F1=100;F2=100;最后输出F2的值100。 执行F1=Dt+10;F2=F1+20;表示F1=116;F2=148;最后输出F2的值148。 执行F1=Dt*10;F2=F1+00;表示F1=116;F2=148;最后输出F2的值148。 执行F1=Dt+00;F2=F1*0a;F1=01@F2;表示从F1开始按步进01循环发数据到F2为止,即for(i=100;i<1000;i+=1)类似的循环,发送的数据=i;循环操作目前还有待完善,不建议使用。 校验公式与此是一样的操作,但@后表示选择程序集成的特殊协议如Modbus协议。 @01表示Modbus协议,代码略 @02表示CRC-CTII协议,代码如下: U16 Crc16_B(u8 *puchMsg, u16 usDataLen){ U8 aCRCHi[256]= {0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,……,0xC1,0x81,0x40}; U8 aCRCLo[256] ={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,……,0x81,0x80,0x40}; U8 uIndex,uchCRCHi=0xff,uchCRCLo=0xff; while(usDataLen--){ uIndex=uchCRCHi^*puchMsg++; uchCRCHi=uchCRCLo^aCRCHi[uIndex]; uchCRCLo=aCRCLo[uIndex]; } return (uchCRCHi<<8|uchCRCLo); } @03~FF保留未使用 Setting.ini配置文件 不同的使用者可能会对协议作频繁的改动,为了减少许多重复工作量,所以在左边设计了下拉菜单,选择经常使用的通讯协议配置,但即使是这样,通信协议种类变化仍然很多,不同场合要求不一样,所以后来把下拉菜单里的内容做成了ini文件可配置形式,保存在setting.ini文件中 下拉菜单的每一个项目对应ini文件中的一节,一节开始用 “[下拉菜单X]”表示,其中XX为序号,必须连续。 每节里有分”使能、名称、包头、包头使能……”,其中“使能=X”表示的是当前节是否有效(即当前菜单是否显示到程序中),在最后一个结束节应该将X设置为0以外都应该X设置为1;“名称=S” 表示下拉菜单显示的内容,S即是显示的内容;其他的则表示对应协议字段的内容和是否使能; 最末尾一节,必需设“使能=0”同时,设置“默认菜单=X”,其中X就表示软件打开时默认选择的通讯协议,设置默认波特率,重启后即自动设置到此波特率值。 比如第0节: [下拉菜单0] 使能=1 名称=公司夹具 包头=55 包头使能=1 帧长=0 帧长使能=1 参数=07 参数使能=1 数据长=2 数据使能=1 校验长=0 校验使能=0 包尾=AA 包尾使能=1 数据=0 数据计算公式=F1=Dt+00; 校验计算公式=F1=Dt+00; …… 比如末尾节: [下拉菜单4] 使能=0 默认菜单=1 默认波特率=9600 ModBus-RTU协议控制区 设备地址:10进制数据,范围是0-255 寄存器地址:10进制数:最大0-65535 寄存器数量:10进制数:最大0-65535 写寄存器值:连续的数字符号为一个数据,输入以10进制数表示,用0-9以外的任何字符(建议用空格或/)来区别不同的数据,每个数据最大为65535 读寄存器值:读出数据将被显示到此处 目前只支持10\06\03这三个使用较为广泛的命令 定时发送数据 并口输出值的计算方法: Xbegin可以理解为输出0时对应的工程量(频率值),Ystop与Xstop可以理解为最大输出值(Ystop)时对应的工程量(Xstop),Star表示即将准备发送的工程量或循环发送时的起始循环值,Step是用于循环时的工程量步进值。 输出 = Ystop * (变量-Xbegin) / (Xstop-Xbegin),此公式是按照Y=K * x公式所得,由此可知K = Ystop /(Xstop-Xbegin),所以也可以写作:输出=K * (变量-Xbegin); 如果循环次数设置为0,即表示不循环,此时“变量=Star-Xbegin 如果循环次数设置大于0,即表示循环,此时“变量”的范围是:(Star-Xbegin)到(Stop-Xbegin)按照K*Step的步进和“间隔ms或次”设定的时间,自动循环发数,发送完一轮后“循环次数-1”直到“循环次数=0”为止 勾选“逆向循环”,则循环方向从Xstop向Star,否则从Star向Xstop 勾选“使用简单协议”,则输出值不改变,但通讯协议采用“3简单通讯协议”所设置的协议 特殊操作 回车:直接发送简单协议区配置的当前数据 UP :在简单协议的基础上按照定时发送区规定的步进加步进 Down:在简单协议的基础上按照定时发送区规定的步进加步进 PS:此软件仅为测试版本,还有待完善,不足之处请原谅

    0
    392
    2.43MB
    2018-09-18
    50
  • 阅读者勋章

    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
关注 私信
上传资源赚积分or赚钱