python下通过串口发送结构体数据
来源:互联网 发布:爱q生活网帝国cms源码 编辑:程序博客网 时间:2024/06/02 04:14
#/usr/bin/env python
# -*- coding:utf-8 -*-
from ctypes import *
from test import *
import serial
class ScreenControlstru(Structure):
_fields_=[
('stru_command',INTER_SERIAL_COMM_HEAD),
('stru_remotectrl',INTER_SIMULATE_SCREEN_REMOTE_CTRL),
('checknum',c_ubyte)]
class ScreenControl():
def _init_(self):pass
def AddressSet(self,comNo):
ScreenControl_stru = ScreenControlstru()
ScreenControl_stru.stru_command.wPakageHeader = 0
ScreenControl_stru.stru_command.wLength = 0
ScreenControl_stru.stru_command.dwCommand = COMMAND_SHOW_SCREEN_SIGNATURE
ScreenControl_stru.stru_command.byVersion = 128
ScreenControl_stru.stru_command.struAddress.wHostAddress = 0
ScreenControl_stru.stru_command.struAddress.wBeginAddress =0
ScreenControl_stru.stru_command.struAddress.wEndAddress = 0xFFFF
ScreenControl_stru.stru_remotectrl.struHead.wLength = 6
ScreenControl_stru.stru_remotectrl.struHead.byVersion = 128 #00010000 V1.0
ScreenControl_stru.stru_remotectrl.struHead.byRes = 1
ScreenControl_stru.stru_remotectrl.byControlType = 2
ScreenControl_stru.checknum = 0xFF #求和
buffer1 = (c_ubyte*sizeof(ScreenControlstru))()memset(buffer1,0xFF,sizeof(ScreenControlstru))
try:
ser = serial.Serial(comNo,9600)
memmove(buffer1,byref(ScreenControl_stru),sizeof(ScreenControlstru))
ser.write(buffer1)
except Exception,e:
print 'open serial failed'
print e
print comNo
exit(1)
总结:前面头文件定义的文件不贴出来了;
1.调试的时候,把错误信息打印出来 print e。
2.将结构体的值赋值给一个缓冲区,注意申请缓冲去的时候要注意值的范围,之前申请的缓冲去是buffer = (c_byte*sizeof(ScreenControlstru)(),c_byte类型的值范围实际是0x7F虽然报错是byte must be in range(0,256),c_ubyte类型可以是0xFF。
3.串口发送数据,不必使用s = '\xaa\xbb\x01'的方式来发送你需要的16进制数,只需要采用C语言常用的方式memory操作即可,只是注意,操作的时候要对指针进行操作,不能直接对数据结构进行操作。
0 0
- python下通过串口发送结构体数据
- Arduino通过串口发送结构体
- Arduino通过串口发送结构体
- 串口发送结构体
- 通过SOCKET发送、接收结构体数据
- 怎么把一个结构体的数据包通过串口发送出去?
- 通过socket发送结构体
- 通过串口发送短消息
- double型数据转字符串后通过MCU串口发送
- .net开发教你通过串口发送数据
- 64位电脑通过串口发送数据到硬件
- LL库通过串口+DMA方式发送数据
- 使用结构体进行串口发送数据,查看磁盘空间大小指令
- 通过串口使用AT指令发送短消息(下)
- 通过串口使用AT指令发送短消息(下)
- VC下基于结构体的数据发送
- 通过python下的socket实现组播数据的发送和接收
- 使用python在openwrt下操作串口发送十六进制数据
- 一个很好的对象池实现
- OpenSOC初探
- CString.AllocSysString(),BSTR,_bstr_t的内存泄露
- 黑马程序员--java基础--IO流(二)
- c#添加picturebox自定义可选图片按键
- python下通过串口发送结构体数据
- 协同过滤推荐算法
- uva11038 How Many O's? 数位dp
- 排序算法的简单总结
- 《C++语言基础》实践项目——运算符重载(二)
- 移动应用统计的基本原理及 UMID 方案解析
- (转)给刚毕业的大学生和刚入门的程序员的忠告及图书推荐
- JDK的动态代理为什么必须要使用接口与使用CGLIB动态代理
- c++引用参数与引用返回值