葡京娱乐总站平台【工业串口和网络软件通讯平台(SuperIO)教程】四.出设备驱动

2017年的夏日,第一替“95晚”大学毕业生将步入职场。而在相同虽然关于“95后”最心仪的新生职业的查中,54%的批投于了主播、网红。

SuperIO相关材料下载:http://pan.baidu.com/s/1pJ7lZWf

前段时间“清华女学霸转身做主播”的情报在社会及引发了了不起的非议。

1.1    开发准备

拿“开发包”内之保有文件复制到项目之“bin”目录下,或项目下的专用生成目录。开发包文件包要下图:

葡京娱乐总站平台 1

  SuperIO.dll是软件平台的主干模块,
SuperIO目录是软件平台的参数配制、数据存储的目。

微信公众号:厚学网

1.2    项目配制

1)目标框架选择Framework4.0

葡京娱乐总站平台 2

2)生成的目标平台利用x86

葡京娱乐总站平台 3

怀有事例程序的目标平台以x86。主要考虑到32各类操作系统和64操作系统的兼容性。

立刻则新闻之支柱都是2006年内蒙古高考理科状元,本科毕业于清华大学建筑学院,硕士研究生就读于北京大学。履历傲人的其,却“委身”游戏主播的职务。她说,在人们记忆中,游戏主播应该好轻松,“就是打打游戏、卖卖萌嘛”。但实在并非如此。游戏直播其实很酷,每天表现的三六九等,都见面直观地于数字上反映出来。

1.3    假定通讯协议

网红,即网络红人,他们满足了网民猎奇、娱乐、刺激等心理需求,有意或无意受到网络世界之追捧。网红可以为定义为优良的内容生产者。他们拥有才华、风格,掌握了“一鸣惊人”的门路,是可贵之浓眉大眼。在一个秋的商社会被,网红有那在的价。借助网红,内容生产者等才“酒香不怕巷子深”了。这对那些有文采的私或者组织来说,自然非常有吸引力。

1.3.1    发送读实时数据令协议

电脑发送0x61命也读实时数令,共发送6个字节,校验和也于“从机地址”开始的增长和,不包“数据报头”、“校验和”和“协议了”。

出殡指令数据帧如下:

葡京娱乐总站平台 4

  

回眸互联网十几年之腾飞,网红前赴后继,一淫秽浪被拍于沙滩及。从文字时代之网红痞子蔡、安妮宝、宁财神、慕容雪村,到图文时代之网红芙蓉姐姐、犀利哥,再届大V时代的网红姚晨、王思聪同宽频时代之网红罗振宇、papi酱,不知有微微只名字而是昙花一现。

1.3.2    解析实时数据协议

   
下位机接收到读实时数令后,并校验成功,返回实时数据,校验和为于“从机地址”开始之长和,不包括“数据报头”、“校验和”和“协议了”。

接收数据帧如下:

葡京娱乐总站平台 5

 

不可否认,网红就同差在当下之提高遭受还设有重重乱象:以“三俗”搏出位,以骇人听闻的言语引发眼球,甚至坐负面营销赚流量。于是,一提到“网红”这个词,人们就是不免有点偏。在许多人口眼中,网红是群体是难以上大雅之堂的。不过,人人喊打的网红只是个别,我们重新当看,真正当互联网立足并闯出一片天底网红,必然有过口的本事。

1.3.3    发送和接收数据事例

出殡(十六进制):0x55 0xaa 0x00 0x61 0x61 0x0d

接到(十六进制):0x55 0xaa 0x00 0x61 0x43 0x7a 0x00 0x00 0x43 0xb4 0x15
0x0d

流量数据为:250.00

信号数据也:360.00

微信公众号:厚学网

1.4    新建设施模块

如下图:

葡京娱乐总站平台 6

增加对SuperIO.dll的引用,如下图:

葡京娱乐总站平台 7

    项目之配制请参见:1.2项目配制。

召开同名不叫时代淘汰的网红是平等桩极有技术含量的干活。一开短视频也许只有短短几十秒,但于他起于人们视野里连获得肯定则可能用几十个钟头之时间打磨。在少的时长里,展现最耀眼的说话,这种努力是值得肯定的。

1.5    构建协商驱动

    新建两单近乎:MySendProtocol
和MyReceiveProtocol,MySendProtocol继承SCL.Device.DeviceSendProtocol基类,MyReceiveProtocol类继承SCL.Device.DeviceReceiveProtocol。

      MySendProtocol
和MyReceiveProtocol两只类似都再度写(override)“Function61”函数,MySendProtocol类吃之Function61部数得打包发送命令操作,MyReceiveProtocol类吃的Function61套数得解析数据操作,FunctionXX在少独八九不离十吃还见面变成对出现,主要是为好记。

    
在MySendProtocol实例中得以调用DriverFunction函数,传入相应的命,例如:0x61。会自行调用“Function61”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础及包裹的,同样为可以动用,但是只要拿“isbox“设置成false,否则会指向发送的多少做特别的拍卖。

  
于MyReceiveProtocol实例中可调用DriverFunction函数,传入相应的指令,例如:0x61。会自动调用“Function61”函数,作为调用相应命令函数的教接口。GetAnalysisData函数是于DriverFunction函数基础及包的,同样可以动用,只是多调用了平等重叠GetCommand函数接口。

    具体代码请参见:DeviceDemo项目。

可是,一些网红“其兴也勃、其灭也突然”,在“可持续发展”这同维度上,瑕疵还是判的。

1.6    构建参数和实时数据实例类

新建两只类似:MyDeviceParameter和MyDeviceRTDataMyDeviceParameter继承SCL.Device.DeviceParameter类,用于保存备参数,可以当此类中增新的配备参数。

          
MyDeviceRTData继承SCL.Device.DeviceRealTimeData类,用于保存设备的实时数据,可以依据报道协议于定义设备的实时数据。

     
这点儿独八九不离十继承基类后会见自行连续SaveSerialize和GetSerialize两个泛型函数,SaveSerialize函数是把当前目标序列化成XML,GetSerialize是将序列化的XML反为变化对象实例。

         
SCL.Device.DeviceParameter类和SCL.Device.DeviceRealTimeData类是继续自SerializeOperation类,他们之接口是IserializeOperation,SerializeOperation只是一个简单易行的序列化XML操作类库。

    
如果开发者想了由定义一个数持久文件,那么可以持续IserializeOperation接口,重写相应的接口函数,自定义存储数据的办法。

 

考其原因,多与“三俗”有关。相比之下,传播正能量的网红更能红得永。网络世界面临,“正能量”网红很让欢迎:如为人戏称为“局座”的张召忠将军、“第一萌警”江宁公安在线、“科普小能人”博物杂志等。欢迎关注微信厚学网;国内有名教育服务平台。汇集国内新生儿知名早教专家,著有国内第一下教育服务咨询平台。每天还来原创教育经验分享、优秀教育读书笔记、婴幼儿睡眠知识、母乳和辅食喂养点等等课程,总起同暂缓适合你!

1.7    构建设备驱动

     
“构建协商驱动”和“构建参数和实时数据实例类”两节都是啊构建运行设备举行的头准备,将作运行设备的性。

      新建一个设备类:MyDevice,它延续自SCL.Device.RunSCLDevice1。

开发者注意到还有一个SCL.Device.RunSCLDevice类,它是比早的运行设备类,考虑的平台的兼容性,现在还当持续使用,但是乍出之配备模型不建议使用SCL.Device.RunSCLDevice类。

它都是连续自IRunSCLDevice接口。

微信公众号:厚学网

1.7.1    常用接口

1)         public override SCL.ProtocolDriver.ISendProtocol SendProtocol

把写好的出殡协议类实例化之后,在斯返回。例如:MySendProtocol类。

 

2)         public override SCL.ProtocolDriver.IReceiveProtocol
ReceiveProtocol

拿写好之收取协议类实例化之后,在这返回。例如:MyReceiveProtocol类。

 

3)         public override SCL.Device.IDeviceParameter DeviceParameter

将写好的装备参数类实例化之后,在是返回。例如:MyDeviceParameter类。

 

4)         public override SCL.Device.IDeviceRealTimeData
DeviceRealTimeData

把写好之实时数据类实例化之后,在此返回。例如:MyDeviceRTData类。

 

5)         public override void InitDevice(int devid)

初始化设备,可以在这里针对殡葬协议、接收协议、设备参数与实时数据等消息进行初始化。

 

6)         public override byte[] GetRealTimeCommand()

此仿佛是返回读实时数令,当CommandCache命令缓冲区中生出可发送命令的时节,优先读、发送取命令缓冲区中的下令数据;如果CommandCache命令缓冲区没有数的当儿,软件平台会活动调用GetRealTimeCommand函数接口,返回读实时数令,进行发送。

 

7)         public override void DealData(byte[] data)

当报道正常时,软件平台会拿收到到之数据自动传入到之函数,可以调用ReceiveProtocol属性进行辨析数据与处理、分析、保存。通讯正常啊与收取协议类中CheckData函数接口有关。

 

8)         public override void UnRegDevice()

当软件平台没有登记的时光,软件平台会调用这个函数。

 

9)         public override void UnknownIO()

当报道链路为null的上,软件平台会调用这个函数。例如:串口未打开、网络尚未连接等。

 

10)     public override void CommunicateChanged(SCL.Device.IOState
ioState)

当报道状态发送改变之时节,软件平台会调用这个函数。通讯状态包括:通讯正常、通讯中断和报道干扰。

 

11)     public override void CommunicateError()

当报道干扰的时,软件平台会调用这个函数。通讯正常啊与吸纳协议类吃CheckData函数接口有关。

 

12)     public override void CommunicateInterrupt()

当报道中断的时候,软件平台会调用这个函数。通讯正常吧跟收取协议类吃CheckData函数接口有关。

 

13)     public override void CommunicateNone()

当未知通讯状态的当儿,软件平台会调用这个函数。一般景象下未见面冒出此类情况。

 

14)     public override void SaveData()

针对处理的数码开展封存。

 

15)     public override void Alert()

判断数是否大,如果出现异常数据,在进行报警处理。

 

16)     public override void ShowData()

亮数据处理,用于更新设备运行器,以及从定义UI和导出数据。

 

17)     public override void DeviceTimer()

每个设备会分配一个定时器,默认1秒钟调用同次等是函数。可以通讯IsStartTimer属性启动、停止定时器,通过TimerInterval属性设置定时器执行间隔。

 

18)     public override SCL.Device.DeviceType DeviceType

归来设备类,设备类包括:普通设备、虚拟设备和其他。

 

19)     public override s y s t e m.Windows.Forms.Control DeviceGraphics

回去设备图形化界面。

 

20)     public override void ShowContextMenu()

著上下文菜单函数。

 

21)     public override string ModelNumber

回设备模块编号,也便是设备的型号,这个编号尽量要求无克重。

 

24)public void ShowMonitorIODialog();

展示通道监视器窗口

 

25)public void ShowMonitorIOData(byte[] data, string desc);

通往运行监视器中展示数据信息

犹记今年中国海军节,张召忠在“畅谈中国海军未来”直播活动着,讲述新中国树立后生人海军艰难时刻时情难自禁、潸然泪下的同样帐篷,多少网友涌入“局座”微博留言“致敬!不哭!”这正是网红以扩散浩然正气,“爱国”也因为网红所讲所感真正引起共鸣。南京市公安局江宁分局官方微博“江宁公安在线”,被网友密切称“江宁婆婆”。这号网红,幽默堪比段子手,为了大各种安全常识也是操碎了心神,快速辟谣、权威分析者越来越一针见血。这看似知名政务微博网红深入基层、贴近民众,并获得了双重多来民间的相信和支持,他们是桥梁、是典型,更是一股气正风清。当然还有“博物杂志”这好像一边卖萌一边让而小知识之百科全书式网红,他们为学术活动来象牙塔,变得栩栩如生而而亲密,其中蕴蓄的是砥砺求知的十分聪明。接关注微信厚学网;国内著名教育服务平台。汇总国内新生儿知名早教专家,著有国内第一家教育服务咨询平台。每天还出本创教育更分享、优秀教育读书笔记、婴幼儿睡眠知识、母乳和辅食喂养点等等课程,总起雷同悠悠可你!

1.7.2    属性说明

     下面是设备拥有的性能,请参考。

1)         UserLevel

用户级别属性,包括:未知用户、普通用户、低级用户与高档用户等四独级别。

 

2)         IsStartTimer

赢得或设置是否被即设备的时钟,默认不被。

 

3)         TimerInterval

得或安装当前装备时钟的间隔时间,默认为1秒。

 

4)         IsRegLicense

获或配备时配备是否让注册,默认不报。

 

5)         RunDevicePriority

落或设置当前设备运转级别,分为:普通和预。如果也先行级别,则先调用该进行发送和接收数据。

 

6)         CommunicationType

获取或安装当前设备的通讯类。包括:串口和网络有限种植。

 

7)         CommandCache

取或设置当前设备命令缓冲,如果发生使发送的数,则先调用命令缓冲的数目进行发送。

 

8)         IsRunDevice

落或安装是否运行时设备,如果安false,当前设置不与运行(发送和接收数据)。

 

9)         DeviceParameter.IsSaveOriginBytes

标识是否保存原有发送和接收的字节数据,如果保留,默认保存路径在D盘。

 

10)      object Tag

临时标记属性。

 

11)      object SyncLock

跟步锁对象

微信公众号:厚学网

1.7.3    事件作证

以下设备事件都是于原事件的根基及进行包装的函数,开发者可以直

连接调用以下触发事件之函数,软件平台在开行的当儿已经默认加载了这些事件。

1)         void OnReceiveDataHandler(byte[] revdata);

接触接收数据事件

 

2)         void OnSendDataHandler(byte[] senddata);

点发送数据事件,当网络通讯的上,应用Self模式的下,可以透过者波自主发送数据。

 

3)         void OnDeviceRuningLogHandler(string statetext);

把设备运行日志输出到运行监视器

 

4)         void OnUpdateContainerHandler();

接触更新运行监视器事件

 

5)         void OnCOMParameterExchangeHandler(int oldcom, int oldbaud,
int newcom, int newbaud);

串口改变事件。

 

6)         void OnDeviceObjectChangeHandler(object obj);

对象数据变动事件,用于驱动显示、导出、服务等模块。

 

7)         void OnDeleteDeviceHandler();

去除设备事件

“正能量”网红有甚多种。有才情、有想法,渴望在飞新陈代谢的互联网大浪中吃沙的准备网红们为值得社会之珍视。顺应时代潮流,将才华变现或变流量,是互联网经济时之必。当正能量网红不丢人,如何当网红之路上走得再远才又值得这些网红后备军们思考。

1.7.4    高级应用

1)         void RunIODevice (SCL.CommunicateController.IDeviceIO io)

好重写这个函数,在此转设备运行的流水线,根据CommunicationType属性指定的报道类,可以将io参数转换为网络通讯接口ISocket或串口通讯接口ICOM,之后可以发指向的对殡葬操作和吸收操作进行二次开发。一般不建议重新写是函数。

 

2)         void Send(SCL.CommunicateController.IDeviceIO io, byte[]
sendbytes)

好重写这个函数,根据CommunicationType属性指定的通讯类,可以管io参数转换为网络通讯接口ISocket或串口通讯接口ICOM,进行发送数据操作。在非又写RunDevice函数的景象下,在适当的采取场景可以重写这个函数。

 

3)         byte[] Receive(SCL.CommunicateController.IDeviceIO io)

可以重写这个函数,根据CommunicationType属性指定的通讯类,可以管io参数转换为网络通讯接口ISocket或串口通讯接口ICOM,进行接收数据操作。在未更写RunDevice函数的情下,在当的运场景可以重写这个函数。

 

4)         void SaveBytes(byte[] data, string desc)

可重写这个函数,对发送的多少与接到的多寡进行打定义保存。默认保存在”d:软件平台
原始数据”目录下。

 

5)         void SocketConnect(string ip, int port)

可重写这个函数,当网络通讯的当儿,有客户端连接到软件平台会调用这个函数接口。

 

6)         void SocketDisconnect(string ip, int port)

可重写这个函数,当网络通讯的时段,有客户端和软件平台断开会调用这个函数接口。

本文来源:(文/ 吴正丹)《人民日报海外版》(2017年06月14日 第08版)

1.8    设备调试

1.8.1    界面方式调度

   界面方式测试主要是构建一个主程序,模拟实的应用程序对设备开展

测试。推荐下这种测试方法。

1)  引用组件

重中之重引用DeviceDemo程序集。如下图:

 葡京娱乐总站平台 8

测试设施

界面方式测试是出窗体界面的,必须继承“SCL.UI
.MainForm”类,并因此代码把软件平台设置成调试模式“SuperIO.Device.DebugDevice.IsDebug
= true;”,如图:

 葡京娱乐总站平台 9

在Form_Load中初始化实例,并且加载调试设备模块,主要是创造设备实例、初始化参数、进行设备调试,如:this.DebugDevice((IRunDevice)_myDevice)语句。如下图:

葡京娱乐总站平台 10

3)IO监测器,显示发送和接纳的本来面目十六进制数据,便于调试。如下图:

葡京娱乐总站平台 11

4)用VirtualSerialPortDriver在本机虚拟出来两个串口,两单串口实现了虚拟连接,例如:COM1和COM2;打开串口助手软件和平台软件(SuperIO平台),分别设置COM1和COM2,按照“1.3假设通讯协议”发送和接收数据。相关软件在“辅助工具”目录里有。如下图:

葡京娱乐总站平台 12

具体测试代码,请参见:FormTest项目。

1.8.2    控制台方式调试

控制台测试,没有UI显示界面,部分功能或测试不咸。需要通过

SCL.Device.IdebugDevice debug=
SCL.Device.DebugDevice.GetDebugInstance()获得调试实例。其他代码和“界面方式测试”一样。如下图:

葡京娱乐总站平台 13

1.9    挂载设备模块

以“葡京娱乐总站平台工业串口和网络软件通讯平台_SuperIO”目录下找到【ConfigTool.exe】应用程序,选择【设备配置】选卡,单击【挂载设备】按钮,把刚开之设备驱动模块挂载到阳台下。如下图:

葡京娱乐总站平台 14

1.10    在阳台下运行设备

    
把装备驱动挂载好以后,运行“工业串口和网络软件通讯平台_SuperIO”目录下的【SuperIO_Run.exe】应用程序,选择【用户管理】->【用户登陆】菜单,选择【工程师】或【管理员】用户,输入默认的密码:123。

登陆到软件平台后,选择【设备管理】->【增加设备】菜单,选择刚刚挂载的装置驱动模块。如下图:

葡京娱乐总站平台 15

出的好之装置驱动模块同时支持COM(串品)和TCP(网络)两种植简报方式,TCP(网络)通讯时支持Client和Server两种植工作模式。

 

作者QQ:504547114

交流QQ群:54256083

法定网址:http://www.bmpj.net

源文章地址:http://www.bmpj.net/index.php?m=article&f=view&id=4