去年接触的一个项目中,需要通过TCP与设备进行对接的,传的是Modbus协议的数据,然后后台需要可以动态配置协议解析的方式,即寄存器的解析方式,,配置信息有:Key,数据Index,源数据类型,数据库列类型,数据排列方式  一开始使用的方式是,从数据库读取出协议的配置,然后在接收到数据的时候,循环每个配置项根据配置-----解析数据------转换类型----存临时列表,,后来改进了一下,配置项存缓存,,数据库修改的时候,同时更新缓存.. 但还是慢了一点,因为需一个配置大概是20-30个…
这里我主要说一下如何做一个USB下位机,这里主要分3部分:1.建立工程:2.添加报文描述符:3.数据的传输.这里就不讲USB的理论知识了,有想要了解的自行百度一下就可以了. 建立工程:工程建立参考:https://www.cnblogs.com/libra13179/p/7193375.html 1.首先打开USB 2.接着把USB设置为下图HID模式 3.选择外部时钟 4.配置时钟树 5.配置USB设置 下面的USB设置就有点讲究了, 6.确认后,生成代码 添加报文描述符: 这里只是建立了一个…
STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发  本文转载自 https://www.cnblogs.com/xingboy/p/9913963.html 这里我主要说一下如何做一个USB下位机,这里主要分3部分:1.建立工程:2.添加报文描述符:3.数据的传输.这里就不讲USB的理论知识了,有想要了解的自行百度一下就可以了. 建立工程:工程建立参考:https://www.cnblogs.com/libra13179/p/7193375.html 1.首先打开US…
编写上位机与下位机通信的时候,涉及到协议的转换,比较多会使用到二进制.传统的方法,是将数据整体获取到byte数组中,然后逐字节对数据进行解析.这样操作工作量比较大,对于较长数据段更容易计算位置出错. 其实,对于下位机给出通讯的数据结构的情况下,可以直接使用C#的struct将数据直接转换.需要使用到Marshal. 数据结构 假定下位机(C语言编写)给到我们的数据结构是这个,传输方式为小端方式 typedef struct { unsigned long int time; // 4个字节 fl…
拿到任务之后首先分成了几个部分: 1.绘图.学习了GDI+ 2.图片保存. 3.将图片转换成byte[].由于使用Socket通信,只能传输byte[]数据,所以这一步是向下位机传输的关键. 相应地,编程实现了下面几个功能: 1.使用GDI+画图并保存为bmp格式的图片.画图部分是书上的例子,只增加了保存的相应代码. public partial class Form1 : Form { Bitmap bitmap; Font myFont = , FontStyle.Bold);//定义字符串…
一.背景: 自从接触单片机编程以来,由于工作上的需要,不可避免的时常会接手别人的代码,但常常由于上一位同事的编码随意性有点大,导致可读性非常的差,有时候不得不完全舍弃原有代码,推倒重来,无形中增加了工作量,浪费了宝贵的开发时间.因而也越来越觉着规范的代码才是提高工作效率的重要保证,不仅仅是为了别人,也为自己的日后维护带来十足便利. 因此本文即挑某一个方面:下位机多个".c, .h"文件的相互包含及排版做一个记录,提示自己,也为新加入的朋友们做个参考. 二.正文: 以我现在正在开发的电源…
背景: 最近负责为主板管理电源的电源管理模块编写软体,使用的MCU为MSP430G2333.功能上很简单,即通过板子上的硬件拨码设定,或者通过IIC与主板通信,由主板的BIOS决定开机及关机的延时供电时间. 正文: 所有功能均按预期实现,但有一个bug在最后蹦了出来,即在延时关机设定时,明明设定为15.18.48个小时,却每次在9个多小时的时候,电源被执行关闭动作.9个多小时,很有意思的数字.不用深究,问题直接锁定在时间比对函数内. // when the current time less t…
2011-12-14 18:44:32 效果图 1,完成设计(由于没有eeprom等存储设备,所以每次上电后需要通过串口配置某些寄存器).在设计中,列出技术评估难度,并进行尝试,参看<我的设计>.txt 2,编写代码,集成调试前,分别使用 1)下位机和“串口调试助手”通讯.完成下位机代码.使串口调试助手可以配置下位机寄存器.已完成. 2)上位机通过VSPD虚拟串口短接,与“串口调试助手”通讯,连续传输9个自己的十六进制数.完成上位机编程.已完成. 3)上位机与下位机集成测试.通过自己编写的上位…
下位机使用北京大华程控电源DH1766-1,上位机使用WPF.实现了电压电流实时采集,曲线显示.上午在公司调试成功,手头没有程控电源,使用TCP服务端模拟.昨天写的TCP服务端正好排上用场. 界面如下: 服务端 服务端实在上篇基础上实现的.需要做如下更改: while (true)                           {                               try                               {               …
linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲了: linux设备驱动程序-i2c(0)-i2c设备驱动源码实现 linux设备驱动程序-i2c(1):i2c总线的添加与实现 而在linux设备驱动程序--串行通信驱动框架分析中,讲到linux内核中串行通信驱动框架大体分为三层: 应用层(用户空间接口操作) 驱动层(包含总线.i2c-core的…