python控制两台光源控制器

工作中碰见两台单通道的大功率光源控制器,但是没有找到该控制器的手册.

一看牌子和厂家名称,突然发现这个和上次同事发给我的多通道手册是一个牌子.

于是插上串口线用串口助手测一下果然 指令兼容的;

厂家名不说了省事,只看串口参数,截图放在下方.

本来是打算C#做,但是python不甘心,于是就python;控制光源控制器.

一共80行两个滑动条,不废话贴程序.

import tkinter as tk
from tkinter import messagebox
import time
import serial
serL=serial.Serial("COM2",19200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=0.5) #winsows系统使用com口连接串行口
serR=serial.Serial("COM3",19200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=0.5) #winsows系统使用com口连接串行口
if (serL.isOpen()):print("serLdone!")
if (serR.isOpen()):print("serRdone!")
def portL_close():
    serL.close()
    if (serL.isOpen()):
        print("关闭失败")
def portR_close():
    serR.close()
    if (serR.isOpen()):
        print("关闭失败")     
def Lsend(send_data):
    if (serL.isOpen()):
        serL.write(send_data.encode('utf-8'))  #utf-8 编码发送
        #ser.write(binascii.a2b_hex(send_data))  #Hex发送
        print("发送成功",send_data)
def Rsend(send_data):
    if (serR.isOpen()):
        serR.write(send_data.encode('utf-8'))  #utf-8 编码发送
        #ser.write(binascii.a2b_hex(send_data))  #Hex发送
        print("发送成功",send_data)
win = tk.Tk();win.title("滑动条控制光源")
try:
    win.iconbitmap('th.ico')   
except:
    pass
r"""
COM2 是左光源
COM3 是右光源
串口配置:
波特率:19200 数据位:8 停止位:1 校验位:NONE
19200 8 N 1 
光源控制器本就单通道:不存在多通道操作:
发送字符串:
设置亮度:200
	发送:SA0200#
	返回:
亮度查询:
	发送:SA#
	返回:a0200
"""
def select_price_L(value):
    Lsend(f"SA0{value}#")
    print(value,"L") 
def select_price_R(value):
    Rsend(f"SA0{value}#")
    print(value,"R")   
Scale1=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='左侧光源' , #滑动条的标签:不写则不显示.
command=select_price_L)
Scale1.pack()
Scale1.set(255)#初始位置100
Scale2=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='右侧光源' , #滑动条的标签:不写则不显示.
command=select_price_R)
Scale2.pack()
Scale2.set(255)#初始位置100
def QueryWindow():
    if messagebox.askokcancel("窗口关闭?")==True:
        portL_close();portR_close()
        win.destroy()
win.protocol('WM_DELETE_WINDOW', QueryWindow)
win.mainloop()

算然自己电脑有python环境但是工控机没python更没有第三方库,于是需要打包成exe.

开始: 新建个打包程序 如下:

import os,sys
def cmd(s="pause"):
    os.system(s)
    pass
打包的文件名="光源控制滑动条002"
生成单一EXE=" -F "
指定图标="-i th.ico"
不显示命令行="--noconsole"
cmd(f"pyinstaller {打包的文件名}.py {生成单一EXE} {指定图标}  {不显示命令行} ")

新建一个文件夹: 这个程序和上面那个还有图标放在里面.运行打包程序.

dist里面就会出现打包成exe的python程序将同名图标复制进去就可以自定义图标.

不过没有加防多开,第一个没关运行二次会报串口打不开. 然后这个打包的exe 经常报毒就很奇怪.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

仔细观察的同学已经发现,上面的程序有好几个毛病,0.不能多开前面已经说过了.1.程序重新打开的时候光源亮度会回到255,2.不知道是控制器问题还是程序问题设置亮度低于100时就写不起作用了.

这次手上有一台海康de4通道光源控制器.控制方式竟然和上次那个一模一样.

附图为证:

.

四通道:贴程序看看.

import tkinter as tk
from tkinter import messagebox
import time,serial
ser=serial.Serial("COM4",19200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=0.1) 
if (ser.isOpen()):print("serdone!")
def port_close():#关闭串口
    ser.close()
    if (ser.isOpen()):
        print("关闭失败")     
def read(S=""):
    if (ser.isOpen()):
        r = ser.read().decode('utf-8')
        if (r==S):
            print(f"{S}")
        else:
            print(f"{S}W>>失败!")     
def send(send_data):
    if (ser.isOpen()):
        ser.write(send_data.encode('utf-8'))  #utf-8 编码发送
        print(">>",send_data)
CH1=0
CH2=0
CH3=0
CH4=0
def readCH_value():
    global CH1,CH2,CH3,CH4 
    if (ser.isOpen()):
        send(f"SA#");r1 = ser.readall().decode('utf-8');
        send(f"SB#");r2 = ser.readall().decode('utf-8');
        send(f"SC#");r3 = ser.readall().decode('utf-8');
        send(f"SD#");r4 = ser.readall().decode('utf-8');
    print(f"**************************************************");
    if (len(r1)==5):
        print(f"{len(r1)} {r1} {r1[2:]}");CH1=r1[2:]
    if (len(r2)==5):
        print(f"{len(r2)} {r2} {r2[2:]}");CH2=r2[2:]
    if (len(r3)==5):
        print(f"{len(r3)} {r3} {r3[2:]}");CH3=r3[2:]
    if (len(r4)==5):
        print(f"{len(r4)} {r4} {r4[2:]}");CH4=r4[2:]
    print(f"**************************************************");   
    Scale1.set(CH1)
    Scale2.set(CH2)
    Scale3.set(CH3)
    Scale4.set(CH4)
win = tk.Tk();win.title("滑动条控制光源")
def select_price1(value):
    send(f"SA0{value}#")
    read("A")
Scale1=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道1' , #滑动条的标签:不写则不显示.
command=select_price1)
Scale1.pack()
def select_price2(value):
    send(f"SB0{value}#")
    read("B")
Scale2=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道2' , #滑动条的标签:不写则不显示.
command=select_price2)
Scale2.pack()
def select_price3(value):
    send(f"SC0{value}#")
    read("C")
Scale3=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道3' , #滑动条的标签:不写则不显示.
command=select_price3)
Scale3.pack()
def select_price4(value):
    send(f"SD0{value}#")
    read("D")
Scale4=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道4' , #滑动条的标签:不写则不显示.
command=select_price4)
Scale4.pack()
readCH_value()
def QueryWindow():
    if messagebox.askokcancel("窗口关闭?")==True:
        try:
            port_close(); 
        except:
            pass
        win.destroy()
win.protocol('WM_DELETE_WINDOW', QueryWindow)
win.mainloop()
r"""
COM4 是光源
串口配置:
波特率:19200 数据位:8 停止位:1 校验位:NONE
19200 8 N 1 
通道操作:
    A:1通道
    B:2通道
    C:3通道
    D:4通道
发送字符串:
设置亮度:200
	发送:SA0200#
	返回:
    发送成功 SD0255#
    D
    发送成功 SC0255#
    C
    发送成功 SB0255#
    B
    发送成功 SA0255#
    A
亮度查询:
	发送:SA#
	返回:a0200
    发送成功 SA#
    a0255
    发送成功 SB#
    b0255
    发送成功 SC#
    c0255
    发送成功 SD#
    d0255	
"""

这次增加了,亮度读取,不会出现重启程序亮度回到255的情况.

1.亮度不能低于100的情况依然存在>依然不知道是哪里出了问题(从现象看应该是控制器的问题).

2.多开的问题也没解决.>>实际上还有个端口记忆和端口扫描的问题.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

偶然机缘巧合和大姐大说了一下第一个情况,大姐大瞄了一眼,就找到:这行:说你这个value哪来的???我木讷的思量了一下说是这是进度条传进来的.只见大姐大说,那肯定是你输入格式错了.

并指出可以控制进度条value的格式.

def select_price1(value):
    send(f"SA0{value}#")

原来根本没有仔细看手册,手册只有短短一页. 回头一看亮度等级是(0000-0255).而不是自己想当然的(00-0255).  好了.问题发现了现在该优化了.               大姐大的精髓没学会.控制格式咱也不会.就简单粗暴的改一下吧.

#笨蛋办法 判断value长度决定前面有几个0 4通道进度条改成如下
def select_price1(value):
    if(len(value)==3):
        send(f"SA0{value}#")
    if(len(value)==2):
        send(f"SA00{value}#")
    if(len(value)==1):
        send(f"SA000{value}#")     
    read("A")

def select_price2(value):
    if(len(value)==3):
        send(f"SB0{value}#")
    if(len(value)==2):
        send(f"SB00{value}#")
    if(len(value)==1):
        send(f"SB000{value}#")  
    read("B")

def select_price3(value):
    if(len(value)==3):
        send(f"SC0{value}#")
    if(len(value)==2):
        send(f"SC00{value}#")
    if(len(value)==1):
        send(f"SC000{value}#")  
    read("C")

def select_price4(value):
    if(len(value)==3):
        send(f"SD0{value}#")
    if(len(value)==2):
        send(f"SD00{value}#")
    if(len(value)==1):
        send(f"SD000{value}#")  
    read("D")

完整程序如下:

import tkinter as tk
from tkinter import messagebox
import time,serial
ser=serial.Serial("COM1",19200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=0.1) 
if (ser.isOpen()):print("serdone!")
def port_close():#关闭串口
    ser.close()
    if (ser.isOpen()):
        print("关闭失败")     
def read(S=""):
    if (ser.isOpen()):
        r = ser.read().decode('utf-8')
        if (r==S):
            print(f"{S}")
        else:
            print(f"{S}W>>失败!")     
def send(send_data):
    if (ser.isOpen()):
        ser.write(send_data.encode('utf-8'))  #utf-8 编码发送
        print(">>",send_data)
CH1=0
CH2=0
CH3=0
CH4=0
def readCH_value():
    global CH1,CH2,CH3,CH4 
    if (ser.isOpen()):
        send(f"SA#");r1 = ser.readall().decode('utf-8');
        send(f"SB#");r2 = ser.readall().decode('utf-8');
        send(f"SC#");r3 = ser.readall().decode('utf-8');
        send(f"SD#");r4 = ser.readall().decode('utf-8');
    print(f"**************************************************");
    if (len(r1)==5):
        print(f"{len(r1)} {r1} {r1[2:]}");CH1=r1[2:]
    if (len(r2)==5):
        print(f"{len(r2)} {r2} {r2[2:]}");CH2=r2[2:]
    if (len(r3)==5):
        print(f"{len(r3)} {r3} {r3[2:]}");CH3=r3[2:]
    if (len(r4)==5):
        print(f"{len(r4)} {r4} {r4[2:]}");CH4=r4[2:]
    print(f"**************************************************");   
    Scale1.set(CH1)
    Scale2.set(CH2)
    Scale3.set(CH3)
    Scale4.set(CH4)
win = tk.Tk();win.title("滑动条控制光源")
def select_price1(value):
    if(len(value)==3):
        send(f"SA0{value}#")
    if(len(value)==2):
        send(f"SA00{value}#")
    if(len(value)==1):
        send(f"SA000{value}#")     
    read("A")
Scale1=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道1' , #滑动条的标签:不写则不显示.
command=select_price1)
Scale1.pack()
def select_price2(value):
    if(len(value)==3):
        send(f"SB0{value}#")
    if(len(value)==2):
        send(f"SB00{value}#")
    if(len(value)==1):
        send(f"SB000{value}#")  
    read("B")
Scale2=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道2' , #滑动条的标签:不写则不显示.
command=select_price2)
Scale2.pack()
def select_price3(value):
    if(len(value)==3):
        send(f"SC0{value}#")
    if(len(value)==2):
        send(f"SC00{value}#")
    if(len(value)==1):
        send(f"SC000{value}#")  
    read("C")
Scale3=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道3' , #滑动条的标签:不写则不显示.
command=select_price3)
Scale3.pack()
def select_price4(value):
    if(len(value)==3):
        send(f"SD0{value}#")
    if(len(value)==2):
        send(f"SD00{value}#")
    if(len(value)==1):
        send(f"SD000{value}#")  
    read("D")
Scale4=tk.Scale(win,orient=tk.HORIZONTAL, 
from_=0,            #从0开始
to=255,             #到255结束
resolution =1,      #单步步长.
length =300,        #控件长度 
sliderlength= 20,  #滑动块尺寸
tickinterval=50,    #指示刻度
label ='通道4' , #滑动条的标签:不写则不显示.
command=select_price4)
Scale4.pack()
readCH_value()
def QueryWindow():
    if messagebox.askokcancel("窗口关闭?")==True:
        try:
            port_close(); 
        except:
            pass
        win.destroy()
win.protocol('WM_DELETE_WINDOW', QueryWindow)
win.mainloop()

好,现在可以随意拖拽进度条控制4通道,光源控制器亮度了.

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TM DP系列LED光源控制器使用说明书 奥普特自动化科技有限公司 OPTIC MACHINE VISION TECH.CO,.LTD. 2007年7月修订 公司地址:中国广东省东莞市长安镇乌沙牌坊口怡丰商业大厦4F 公司网址:www.optmv.com 电话:0769-86068808 传真:0769-81606698 版权所有 本手册中所提及的其它软硬件产品的商标与名称,都属于相应公司所有。 本手册的版权属于东莞市奥普特自动化科技有限公司所有。未得到本公司的正式许可,任何组织或个人均不得以任何手段和形式对本手册内容进行复制或传播。本手册的内容若有任何修改,恕不另行通知。 注意事项: 警告 本产品外接220VAC,在插拨电源时,请保证控制器的电源开关是关闭状态,以防触电。 在使用本产品前,请详读此说明书;使用本产品时,请按照本说明书中的操作进行。 出现非正常情况时,请致电我司,请勿自己对产品进行拆装。 请保证本产品的良好接地,以防触电。 请勿直视光源发出的光线,以防对眼睛造成损伤。 目录 第一章 产品介绍 3 概述 3 型号分类型号 3 性能参数 3 第二章 使用方法 4 面板说明 4 接线 6 第三章 手动操作 7 亮度设置 7 通道开关设置 7 关闭输出 7 打开输出 7 第四章 演示程序 8 第五章 触发功能 9 第六章 通信协议 10 硬件规范 10 数据格式(帧格式) 10 第七章 附录 13 机械参数 13 第一章 产品介绍 概述 首先感谢您选用OPT的产品。DP系列LED光源亮度控制器,是一款可编程数字控制器。其具有以下几种功能:255级亮度调节功能(标准型通道最多4路,每一路亮度单独可控)、计算机通信功能(RS232接口)、触发功能(软件触发和硬件触发均可)。 型号分类型号 型 号 串口控制方式 通 道 外部触发 控制光源类型 DP1024-1 yes 1 Yes 24V光源 DP1024-2 yes 2 Yes 24V光源 DP1024-3 yes 3 Yes 24V光源 DP1024-4 yes 4 Yes 24V光源 性能参数 项 目 参 数 说 明 LED电源输出电压 24V 总功率最大可达45W 亮度可调级别 255级 外部触发输入 5V输入 触发延时时间 <10us 外部触发频率 <1/T 由频闪时间决定:如T=1ms,则外部触发频率最大可达1K。 RS-232通讯波特率 9600bps 为用户开放通讯协议 工作环境温度 0~60oC 单路输出 1A 注意:4路总输出不超过1.8A 电 源 100~240VAC 1.5A 宽电压输入 功 耗 <3W 外型尺寸 165mm×105mm×95mm 重 量 0.85kg 注意:控制器中的寄存器寿命为10万次。使用寿命到期后,寄存器便不再具有数据储存的功能(重启后,并不恢复为上次关机时的值)。 第二章 使用方法 面板说明 操作面板三按键输入,三位数码管显示输出,见下图: 图1 前面板 图2 后面板 界面 说明 备注 1 三位数码管显示输出 左起第一位为通道显示位,数值从1~4可调; 例:150表示第1通道亮度为50,注意,50是是十六进制表示的。 后两位为参数状态位,以十六进制表示,数值从00~FF可调(对应十进制0~255)。 2 信号灯 信号灯分别一一对应每路通道,信号灯的状态有两种,为亮和灭,亮时表示此通道处于打开状态,灭时表示此通道处于关闭状态 当外部接入触发信号,或使用频闪功能时,信号灯将和光源同步进行频闪,即一亮一灭。此时就可以通过观察信号灯的状态得知光源的工作状态。 3 三按键输入 左起第一位按键(S)为选择键。可以切换数码管当前位。 左起第二位按键(+)为参数加,每按1次,数码管当前位加1,直到最大; 左起第三位按键(-)为参数减,每按1次,数码管当前位减1,直到最小。 注: 1 当参数选择位数值为“00”时,再按一次参数减按键,则参数选择位将变为“--”,此时对应的通道被关闭,无电压输出。 2 任一通道的参数状态位的数值在00~FF范围内时,信号灯等处于亮的状态,通道被关闭时,信号灯状态为灭。 3 每次接通电源后打开控制器,数码管显示输出为上一次关闭控制器前的状态,如上一次关闭控制器前的显示输出“368”,本次打开显示输出也为“368”。 接线 图3 接线图 步骤 1 将光源控制器连接好(参考图3) 步骤 2 如果需要进行外部触发,请将外部触发信号源与控制器连接好(参考图3) 步骤 3 接入电源(220VAC),把红色开关按钮“-”按下,“○”凸起,指示灯亮,表示已上电。 步骤 4 如果需要用计算机对光源亮度进行控制,请关机的状态下 用RS232数据线将PC和控制器接好,然后用我司提供的Demo程序或贵公司自己编写程序进行控制即可。在用串口方式进行操作时,仍然可用手动的方式对各通道的参数进行设置,即上位机和控制器都可对参数进行设置,而不需要进行模式转换。Demo程序介绍请参考第四章 步骤 5 如需要用到频闪功能,请参照第五章 说明操作。同样,在使用频闪功能时,上位机和控制器仍然可对参数进行设置,而不需要进行模式转换,操作简单、方便 第三章 手动操作 亮度设置 每次接通电源后打开控制器,数码管显示输出为上一次关闭控制器前的状态,如上一次关闭控制器前的显示输出“368”,本次打开显示输出也为“368”。按选择键S,数码管中通道显示位“3”开始闪烁,按功能键+和-,便可对通道进行选择。通道选择确定后,按S键,数码管中参数状态位的高位“6”开始闪烁,按功能键+和-,便可对其进行选择,范围从0~F,光源亮度也随之变化;同理再次按S键,可对参数状态位的低位进行选择,范围同样从0~F。以上动作完成后,按S键,对你的设置进行保存,数码管也不再闪烁,如还需要设置,则按S键,重新进行以上操作。 通道开关设置 关闭输出 步骤 1 选择需要关闭的通道。 步骤 2 用“-”按键将亮度值设为00,此时,再按一次“-”按键,则参数选择位将变为“--”,此时对应的通道被关闭,无电压输出。 例:数码管显示输出为“200”时(2通道的信号灯亮),再按一次参数减按键,则变为“2--”(2通道的信号灯灭),此时2通道被关闭。 打开输出 步骤 1 选择需要打开的通道。相应的亮度显示为“--”。 步骤 2 按“+”按键,则对应通道打开,(对应通道的信号灯亮), 步骤 3 调整对应通道的亮度值至合适的值 第四章 演示程序 图4 Demo界面 串口选择:选择控制器所连接的通信串口。 功能选择:选择执行何种功能。 通道选择:选择光源的通道。 数值选择:选择光源的亮度等级。 执行键:执行相应的操作(点击执行键,上位机会根据功能选择、通道选择和数值选择的相应设置向控制器发送命令)。 退出键:退出演示程序。 状态栏:上位机和控制器通信的状态。 滑块和亮度调节:同一作用,调节光源的亮度。 通道开关:控制某一通道的关和开。 第五章 触发功能 外部触发: 外部触发的条件是,对TR端口输入TTL高电平时,光源灭,输入TTL低电平时,光源亮。通过控制TTL电平的高低,就可以控制光源的频闪周期。 外部端子 控制器内部 图5 触发端接线图 软件触发: 用软件实现触发功能,即使用串口对通道进行控制,使通道按照做好的设定打开和关闭,以此控制光源频闪。请参照第五章 说明操作。 第六章 通信协议 硬件规范 波特率 9600 bps 数据长度 8 bits 停止位 1 bit 奇偶校验 无 数据格式(帧格式) 1字节 1字节 1字节 3字节 2字节 特征字 命令字 通道字 数据 异或和校验字 注: 所有通讯字节都采用ASCII代码 特征字 = $ 命令字 = 1,2,3,4 1: 打开对应通道电源 2: 关闭对应通道电源 3: 设置对应通道电源参数 4: 读出对应通道电源参数 对于第1,2,3项接收正确时返回特征字$,接收错误时返回&。 对于第4项接收正确时返回对应通道的电源设置参数(返回格式跟发送格式相同),接收错误时返回&。 通道字 = 1,2,3,4。分别代表4个输出通道。 数据 = 0XX(XX=00~FF内的任一数值),对应通道电源的设置参数,高位在前,低位在后。 异或和校验字 = 除校验字外的(从特征字-数据)异或校验和,校验和的高半字节ASCII码在前,低半字节ASCII码在后。 例:将第1通道亮度设为50,则以ASCII码向下写“$3103217” 异或校验字运算过程如下: 字符串 ASCII码 ASCII码以十六进制表示 将高半字节和低半字节分别以8421码表示 特征字 $ 36 24 0010 0100 命令字 3 51 33 0011 0011 通道字 1 49 31 0011 0001 数据 0 48 30 0011 0000 3 51 33 0011 0011 2 50 32 0011 0010 异或和 0001 0111 异或校验字 1 7 注:打开对应通道电源、关闭对应通道电源和读出对应通道电源参数3个功能的异或校验字的运算过程中,数据的3个字节的值对异或结果无影响,保证格式为0XX(XX=00~FF内的任一数值)即可。 以下为若干组实验数据,若用户自行编写Demo程序,可以下列数据进行对比测试 关闭2通道:$2206416 字符串 ASCII码 ASCII码以十六进制表示 将高半字节和低半字节分别以8421码表示 特征字 $ 36 24 0010 0100 命令字 2 50 32 0011 0010 通道字 2 50 32 0011 0010 数据 0 48 30 0011 0000 6 54 36 0011 0110 4 52 34 0011 0100 异或和 0001 0110 异或校验字 1 6 打开2通道:$1206415 字符串 ASCII码 ASCII码以十六进制表示 将高半字节和低半字节分别以8421码表示 特征字 $ 36 24 0010 0100 命令字 1 49 31 0011 0001 通道字 2 50 32 0011 0010 数据 0 48 30 0011 0000 6 54 36 0011 0110 4 52 34 0011 0100 异或和 0001 0101 异或校验字 1 5 读取2通道电源参数:$4206410 字符串 ASCII码 ASCII码以十六进制表示 将高半字节和低半字节分别以8421码表示 特征字 $ 36 24 0010 0100 命令字 4 52 34 0011 0100 通道字 2 50 32 0011 0010 数据 0 48 30 0011 0000 6 54 36 0011 0110 4 52 34 0011 0100 异或和 0001 0000 异或校验字 1 0 第七章 附录 机械参数 前视图 侧视图 后视图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值