前言
工训中心如下说:
不用32是成本考虑,毕竟一届600多人,坚持人人做一板,也坚持7-8年了
害,无所谓了。水就完事了。。。
前置
鉴于某带学信科老师觉得:信科学生默认会python
的态度,我觉得我还是有必要讲一下py的安装。我写下这篇的时候python都3.10了,那就放python3.10的win安装下载链接吧。
安装界面一打开,第一件事千万记得,把添加到path给勾上(py默认是不添加环境变量的),然后一路next,安装完后直接close就行。
然后打开cmd
,输入pip install pyserial
安装程序的前置包。然后回到这个实验本身
实验测试
对速通没啥用的前置部分
测试方法如下:
通过杜邦线将51单片机与RS232/RS485转换器连接,再通过USB转RS232/RS485串口通讯线与PC机连接,下载hex文件,并给单片机上电;
如果直接用某一台单片机做主机,该单片机需要下载上位机程序中的接点软件而不是下位机软件;
下位机下载后的初始现象为:最左边两个数码管显示00表示从机编号,最右边3个数码管显示000表示评分;
按下导航按键中心按钮进入设置模式,将从机编号和评分设置完成后再按一次中心键退出设置模式,再按下KEY1,KEY2,标志设置完成;
通过控制上位机进行从机检测获取下位机编号,并获取其评分,数据显示上位机的主控制器上,最后结束评分,单片机LED灯熄灭。
同时阅读其上位机和下位机之间通信的数据包如下(注:协议中的检验字节,本打分系统采用累加和编码。):
(1)主机检测从机是否正常相关数据包:(主机与单个从机设备通信)
A. 设备正常检测数据包:
方向:上位机—–>下位机
数据包消息:数据包头+从机地址+检测功能码(Fun_CheckSlave)+自定义内容(Check_Content)+校验字节
功能:查询下位机是否正常。正常,下位机发送回应查询数据包;不正常,则下位机不予回应;数据传输过程发生错误,下位机发送回应错误数据包,上位机可以通过设置多次轮询来重新检测该设备是否正常;
B. 回应查询数据包:
方向:下位机—–>上位机
数据包消息:数据包头+从机地址+检测功能码(Fun_CheckSlave)+自定义内容(接收自主机Check_Content)+校验字节
C. 回应错误数据包:
方向:下位机—–>上位机
数据包消息:数据包头+从机地址+检测功能码(Fun_CheckSlave)+错误码(ErrorInfo)+校验字节
(2)主机获取从机评分相关数据包:(主机与单个从机设备通信)
D. 获取多、单机评分数据包:
方向:上位机—–>下位机
数据包消息:数据包头+检测正常从机地址(0x00)+读下位机功能码(Fun_ReadInfo)+从机地址+校验字节
功能:对检测正常的设备,进行一次轮询,获取评分已经准备好的从机的分数。对于单机直接进行通信,没有轮询。
E. 结果返回数据包:
方向:下位机—–>上位机
数据包消息:数据包头+从机地址+读下位机功能码(Fun_ReadInfo)+从机返回的分数值+校验字节(分数值>100:表示上面提及的未准备好,回应错误数据包)
(3)此轮评分结束相关数据包
F. 复位数据包:(主机与所有从机通信)
方向:上位机—–>下位机
数据包消息:数据包头+广播地址+复位功能码(Fun_Reset)+从机返回的分数值(0x00)+校验字节
功能:指示所有正常连接的从机进行复位操作,准备下一轮的评分。
如果你只是要速通的话,前面这些都没啥用,可以掠过。下来看怎么做比较实在:
实在一点的速通操作
连接好你的主机和从机,然后按装工训的说明设置好从机的编号(小数点位代表你在设置那一位),调好左边的编号和右边的分数后,千万记得用k2和k3按键锁定
然后呢,在主机连接到电脑上运行咱提供的python程序:
import binascii |
在cmd中输入py xxx.py
(记得先cd
)
然后输入你板子上你设置的编号,多机运行的话各个机子的编号用空格隔开
然后回车等着就行了(
这里放个我的实验记录
两个从机的编号分别为17
和19
,分数分别设置为23
和54
正常的运行结果应该是下面这样的:
答疑
- 为什么我程序运行完一直在尝试校验中?
可能你线没接好吧……
- 为什么我获取到的分数是
0x6F
(即 111 )
有可能板子问题,你可以试着重置一下板子。实在不行换个板子,换板子大概能解决所有问题
- 多机怎么搞?
首先你得弄个可以接多个线的东西(找老师要),然后A口全部线接到一起,B口也是,然后再出现上面问题就不用问我啦,一样的