|
发表于 2019-7-25 19:45:05
|
显示全部楼层
本帖最后由 神秘の宅叔 于 2019-7-26 12:46 编辑
您好,暂时还没有屏做主机C程序,如果要写,我的想法是这样:C写法思路还是可以按照迪文os汇编的思路例子,也就是从DGUS的变量地址配置上面借用一块地址,分别按照写好的字节的配置,程序去判断并来控制主机指令发送、和接收处理,
可以从如下的细节做参考例如:
1、单条mdoubs指令的启用和关闭,
2、读写的Modbus设备地址
3、读写的Modbus设备地址0x03 0x10 ....
4、0x 0000所有页面下均执行指令; 0x0001仅在指定页面下执行指令;0x0002仅在VP指向的变量缓冲区低字节内容为0x5A才执行指令
5、本条指令执行后,等待应答的最大周期(n*40/20ms,收到应答正确后立即执行下条)
6、本条指令读写数据在VP空间的起始地址
7、本条指令读写的数据在Modbus设备上的数据起始地址。
我们做好上面程序的几点架构之后是基本能跑modubs通讯,或者我们还可以增加一些其他的功能是程序的设计更加的完善:
1、总线通信状态反馈,0x00=失败,0x**=成功
2、本条指令执行后,未收到应答或应答错误,再次补发的次数
3、产生的通讯错误码。 01 通讯超时 02 校验错误 03 应答地址不对
4、指令执行后无应答,是否执行下条指令。
等等,
modbus的协议虽然是固定的,但是具体主、从的双方配合还是可以根据我们自己写的程序去做得更好。
说了这么一堆,其实我想要表达的是上面用vp地址判定的思路是一种适合迪文厂家进行直接写好库模板让用户去使用的一种方式,用户也大可不按照上述这个设计思路,直接根据自己设计的项目,配合界面的触控按键、显示控件,程序直接将主机的的指令,直接程序将固定好指令轮询时间、协议数据,通过串口发出来,这样的程序应该对用户的思路没有局限性,反而是取决于用户的屏上面的demo功能限制,所以一千个demo就会一千种不同的C程序了,我们可以将mdobus指令写成固定的函数,只是控制好相关的读写操作两头的地址,这样写法会更加直接简单,当然楼上的C51的例子例如CRC程序也都是可以直接复制过来用的。
正是因为这样,所以T5L虽然开放了C语言平台,方便用户自己写程序。如果实在是不想写这个C程序的串口通讯,而且只是针对于串口通讯那一块的开发,
所以建议楼主现在实际完全也可以用迪文os内核、用迪文已经写好的汇编modbus程序那套架构去用,用迪文已经写好os的内核,程序不跑T5L80c51,迪文os汇编怎么写的不用去理会,甚至都不需要看代码,实际需要做的只是按照说明操作手册在界面上面配置好控件、触摸和配置22文件了。
当然我说的只是我的一些理解和想法,仅供参考。
|
|