许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Jetson NX实现USB转RS485通讯:16进制数据输出与接收

Jetson NX实现USB转RS485通讯:16进制数据输出与接收

阅读数 8
点赞 0
article_banner

Jetson NX实现USB转485通讯16进制数据输出与接收

  • 前言 准备 关键点——Pyserial 程序实现

前言

后续要做模型的部署,购置了Jetson NX  板子。因为还有一部分硬件控制,想着硬件控制部分干脆也用NX来实现。其中硬件部分要实现对电磁振动器的起停,电压,频率进行控制,本身振动器有一个带485的控制器,可对控制器输入特定16进制指令进行相应控制。

准备

环境:ubuntu18.04, python3.7  
485通讯协议:ModebusRTU,参考链接
使用硬件:Nvidia Jetson NX,USB转485,下游传感器/控制器等
使用串口 serial Port Header串口,端口号为ttyS0,端口插拔效果如下:
在这里插入图片描述

关键点——Pyserial

串口信息的传输主要靠Pyserial库实现,NX板子自带Pyserial,无需安装

   主要命令就是串口的配置,serial.write写入数据,serial.read读取数据

   最令我费解是数据格式的问题,serial的数据是以字节流的形式进行传递,即bytes

   网上有很多种16进制数据输入的相关解读,都未能成功,后尝试以下方法后成功实现:
传输数据:01 03 00 00 00 03 05 CB
首先将其转化为10进制,并存储在列表中,并转化为bytes,即bytes([1,3,0,0,0,3,5,203])

程序实现

import serial
import time

ser = serial.Serial("/dev/ttyUSB0", 9600) # 选择串口,并设置波特率
if ser.is_open:
    print("port open success")

    start_data = bytes([1,6,0,0,0,1,72,10])           # 一些控制指令
    stop_data = bytes([1,6,0,0,0,0,137,202])
    read_data = bytes([1,3,0,0,0,3,5,203])
    v_50 = bytes([1,6,0,1,0,50,89,223])
    v_60 = bytes([1,6,0,1,0,60,216,27])
    f_40 = bytes([1,6,0,2,1,144,41,246])

    ser.write(start_data)
    time.sleep(2)        
    ser.write(v_50)
    time.sleep(0.1)     # 两条写入命令之间也必须有延时
    ser.write(f_40)
    time.sleep(2)
    ser.write(stop_data)
    time.sleep(0.1)
    ser.write(read_data)
    time.sleep(0.1)     # 延时,否则len_return_data将返回0,此处易忽视!!!
    ser.write(v_60)     # 每次停机后调整参数,下次启动时无需再调整所需频率和电压
    time.sleep(0.1)
    len_return_data = ser.inWaiting()  # 获取缓冲数据(接收数据)长度
    if len_return_data:
        return_data = ser.read(len_return_data)  # 读取缓冲数据      

        str_return_data = return_data.hex()            # bytes转换为hex(16进制)

        print(str_return_data)    # eg: 01 03 06 00 00 00 3c 01 90 e0 85
else:
    print("port open failed")

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空