下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用JS获得串口数据JavaScript语言通常是一种网页编程语言,比较适合前台的一些应用设计。对于本地设备和数据的操作有比较大的限制。由于项目的需要,我需要获得本机的串口数据并显示在web端。我们有很多中方法实现功能,在实际的操作过程中我测试两种方式获得数据。第一种方法是使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制。第二种方法是使用C#语言的控件对串口进行控制,然后使用JS+AJAX与C#进行交互获得串口数据。先说说两种方法各自的特点:方法一使用的是微软的ActiveX控件MSCOMM32.dll,该控件可以直接对串口进行操作,而JS也可以通过调用接口进行控制。不过ActiveX控件目前只针对IE浏览器支持较好,我用的是Chrome那就爱莫能助了。方法二目前应该是比较流行的,C#用来做后台控制个人觉得还是很不错的,而AJAX在前后台数据交互方面的作用应该也是有目共睹的。唯一的不足可能就是在数据同步方面可能会稍有延迟,毕竟AJAX是一个异步传输的标准。首先,我尝试了方法一。实现一个htm文件和一个js文件。关于串口调用的代码很简单,htm文件中的主要工作是添加MSCOMM32.dll控件的调用。<objectclassid="clsid:648A5600-2C6E-101B-82B6-000000000014"id="MSComm1"codebase="MSCOMM32.OCX"type="application/x-oleobject"style="left:54px;top:14px"><paramname="CommPort"value="4"><!--设置并返回通讯端口号。--><paramname="DTREnable"value="1"><paramname="Handshaking"value="0"><paramname="InBufferSize"value="1024"><paramname="InputLen"value="0"><paramname="NullDiscard"value="0"><paramname="OutBufferSize"value="512"><paramname="ParityReplace"value="?"><paramname="RThreshold"value="1"><paramname="RTSEnable"value="1"><paramname="SThreshold"value="2"><paramname="EOFEnable"value="0"><paramname="InputMode"value="0"><!--comInputModeText0(缺省)通过Input属性以文本方式取回数据。comInputModeBinary1通过Input属性以二进制方式检取回数据。--><paramname="DataBits"value="8"><paramname="StopBits"value="1"><paramname="BaudRate"value="38400"><paramname="Settings"value="38400,N,8,1"></object>以上代码主要设置了串口号,波特率,收发缓冲等等(具体使用说明网上有很多)。而在js文件中则主要实现打开关闭串口,以及收发数据的操作。functionOpenPort(){varcmd_send="";varresult=$('txtReceive').value;varresults=result.split(',');for(vari=0;i<results.length;i++){cmd_send+=String.fromCharCode(eval(results[i]));}if(MSComm1.PortOpen==false){MSComm1.PortOpen=true;MSComm1.Output=cmd_send;〃发送命令}else{window.alert("已经开始接收数据!");}}functionClosePort(){if(MSComm1.PortOpen==true){MSComm1.PortOpen=false;}else{window.alert ("串口已经关闭!");}}functionSendMessage(){varcmd_send="";varresult=$('txtReceive').value;varresults=result.split(',');for(vari=0;i<results.length;i++){cmd_send+=String.fromCharCode(eval(results[i]));}if(MSComm1.PortOpen==false){window.alert("串口已经关闭!!");}else{MSComm1.Output=cmd_send;〃发送命令}}实现之后的效果是这样的:我们看到的上面的文本框使我发送的指令,而下面的文本框就是我收到的数据。后,我使用方法二。使用C#打开串口,使用jQuery的函数和C#进行通讯获取当前的数据(包括当前经纬度,时间日期)。C#的代码如下:publicstaticvoidRead(){sp=newSerialPort("COM4",38400,Parity.None,8,StopBits.One);sp.Close();sp.ReadBufferSize=512;sp.ReceivedBytesThreshold=1;sp.Open();while(true){try{Databuffer+=sp.ReadExisting();}catch(TimeoutException){}}}其中sp为串口类SerialPort。打开串口之后调用ReadExisting函数读取串口数据。JS中获取当前数据的代码如下functionGPSGetDataTimer(){Referece="data";//获得GPS数据$.post("GetGPSDataComm.aspx",{REF:encodeURI(Referece)},function(data){alert(data);});}我按照一定的频度向GetGPSDataComm.aspx文件发出请求,然后获得当前的数据,并且把字符串显示出来。效果如下图:COlocalhost:2399/googleX20B3pX20i 1sps/bzbc.hta,卢 1—|Map1Satellite|H>irid•p;Hongkou虹口区蘇二澀錢二傩5±a(.v-□
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度高铁站房PC构件预制及吊装工程合同2篇
- 二零二五年度物业管理顾问合同(含交通枢纽管理)2篇
- 二零二五版货车司机意外伤害赔偿合同范本3篇
- 二零二五年度绿色环保型二手房按揭交易合同模板3篇
- 二零二五食堂承包合同(大路食堂运营管理)3篇
- 二零二五版二手房买卖与家具选购代理合同3篇
- 二零二五年度智慧社区家居安装合同规范3篇
- 二零二五年度虫草科研合作与技术转移合同范本3篇
- 二零二五年度建设工程合同履约管理与信息化平台3篇
- 二零二五版汽车租赁车辆运输服务合同2篇
- 财务总监个人述职报告
- 居家养老护理人员培训方案
- 江苏省无锡市2024年中考语文试卷【附答案】
- 管理者的九大财务思维
- 四年级上册数学应用题练习100题附答案
- 2024年度中国电建集团北京勘测设计研究院限公司校园招聘高频难、易错点500题模拟试题附带答案详解
- 有关企业会计人员个人工作总结
- 人教版高中数学必修二《第十章 概率》单元同步练习及答案
- 干部人事档案专项审核工作情况报告(8篇)
- 智慧校园信息化建设项目组织人员安排方案
- 多旋翼无人机驾驶员执照(CAAC)备考试题库大全-下部分
评论
0/150
提交评论