aardio串口调试助手源码下载

精华  
Admin Admin
发布:2017-06-15 10:43:20 分类:资源下载
aardio串口调试助手工程源码下载地址:
http://www.jianma123.com/download/串口调试助手.zip  (工程资源文件内已有Pcomm.dll)
main.aardio源码:
import win.ui;
import win.reg;
import thread.command;
import console
/*DSG{{*/
mainForm = win.form(text="串口调试助手";right=564;bottom=310)
mainForm.add(
baud={cls="combobox";left=69;top=43;right=144;bottom=63;edge=1;items={"50";"75";"110";"134";"150";"300";"600";"1200";"1800";"2400";"4800";"7200";"9600";"19200";"38400";"57600";"115200";"230400";"460800";"921600"};mode="dropdown";z=3};
button={cls="button";text="开启串口";left=20;top=154;right=138;bottom=207;z=1};
button2={cls="button";text="发送";left=426;top=238;right=487;bottom=291;z=8};
button3={cls="button";text="转Hex";left=493;top=237;right=554;bottom=290;z=12};
checkbox={cls="checkbox";text="16进制显示";left=22;top=237;right=115;bottom=260;z=10};
checkbox2={cls="checkbox";text="16进制发送";left=23;top=262;right=116;bottom=285;z=11};
databit={cls="combobox";left=69;top=98;right=144;bottom=118;edge=1;items={"8";"7";"6";"5"};mode="dropdown";z=5};
parity={cls="combobox";left=69;top=71;right=144;bottom=91;edge=1;items={"None";"Even";"Odd";"Mark";"Space"};mode="dropdown";z=4};
port={cls="combobox";left=69;top=15;right=144;bottom=35;edge=1;items={};mode="dropdown";z=2};
richedit={cls="richedit";left=153;top=11;right=555;bottom=223;edge=1;multiline=1;wrap=1;z=9};
richedit2={cls="richedit";left=151;top=238;right=420;bottom=293;edge=1;multiline=1;wrap=1;z=13};
static={cls="static";text="串口号:

波特率:

校验位:

数据位:

停止位:";left=18;top=17;right=80;bottom=152;transparent=1;z=7};
stop={cls="combobox";left=69;top=126;right=144;bottom=146;edge=1;items={"1";"2"};mode="dropdown";z=6}
)
/*}}*/

import fsys.res;
..fsys.res.saveRes("/res/","/")
import bujin;
Serial = bujin.Serial()
posts = Serial.posts()
for(i=1;#posts;1){
mainForm.port.add(posts[i])
}



mainForm.port.selIndex = 1
mainForm.baud.selIndex = 13
mainForm.stop.selIndex = 1
mainForm.parity.selIndex = 1
mainForm.databit.selIndex = 1


port = mainForm.port.selText
baud = mainForm.baud.selText
stop = mainForm.stop.selText
parity = mainForm.parity.selText
databit = mainForm.databit.selText


mainForm.port.oncommand = function(id,event){
port = mainForm.port.selText

}

mainForm.baud.oncommand = function(id,event){
baud = mainForm.baud.selText
}

mainForm.stop.oncommand = function(id,event){
stop = mainForm.stop.selText
}

mainForm.parity.oncommand = function(id,event){
parity = mainForm.parity.selText
}

mainForm.databit.oncommand = function(id,event){
databit = mainForm.databit.selText
}


mainForm.button.oncommand = function(id,event){
var ret = ""
if(mainForm.button.text == "关闭串口"){
ret = Serial.close(port)
if(ret == 0){
mainForm.button.text = "开启串口"
return ;
}
}
ret = Serial.start(port,baud,stop,parity,databit);
if(ret == 0){
mainForm.button.text = "关闭串口"
}
}


mainForm.button2.oncommand = function(id,event){
var str = mainForm.richedit2.text
if(mainForm.checkbox2.checked){
//串口发送16进制的本质就是发送 ascii
//所以发送16进制前 需要先把文本框的16进制转换成 ascii 后发送
str = Serial.HextoStr(str)
Serial.write(port,str)
}else {
Serial.write(port,str)
}
}


Serial.onRead = function(str,len,port){

if(mainForm.checkbox.checked){
mainForm.richedit.text ++= Serial.StrtoHex(str)
}else {
mainForm.richedit.text ++= str
}
}

mainForm.button3.oncommand = function(id,event){
var str = mainForm.richedit2.text
mainForm.richedit2.text = Serial.StrtoHex(str)

}

mainForm.show()
return win.loopMessage();

Pcomm串口DLL封装源码:
//Pcomm 串口
/*
QQ:332133281
有问题在反馈
*/

import win.reg
import console
import Pcomm;
import thread
import thread.command

namespace bujin;

class Serial{
ctor(){
this.BaudHex = {["50"]="0x00";["75"]="0x01";["110"]="0x02";["134"]="0x03";["150"]="0x04";["300"]="0x05";["600"]="0x06";["1200"]="0x07";["1800"]="0x08";["2400"]="0x09";["4800"]="0x0a";["7200"]="0x0b";["9600"]="0x0c";["19200"]="0x0d";["38400"]="0x0e";["57600"]="0x0f";["115200"]="0x10";["230400"]="0x11";["460800"]="0x12";["921600"]="0x13"};
this.StopHex = {["1"]="0x00";["2"]="0x06"};
this.ParityHex = {["None"]="0x00";["Even"]="0x18";["Odd"]="0x08";["Mark"]="0x28";["Space"]="0x38"};
this.DatabitHex ={["8"]="0x03";["7"]="0x02";["6"]="0x01";["5"]="0x00"};

this.Baud = {50;75;110;134;150;300;600;1200;1800;2400;4800;7200;9600;19200;38400;57600;115200;230400;460800;921600}
this.Stop = {1;2};
this.Parity = {"None";"Even";"Odd";"Mark";"Space"};
this.Databit ={8;7;6;5};

..thread.command().read = function(str,len,port){
if(this.onRead){
this.onRead(str,len,port)
}
} };
posts = function(){
var reg = ..win.reg("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM");//读取注册表串口
var posts = {}
for(name,value,t in reg.eachValue()) {
..table.push(posts,..string.match(value,"(\d+)"))
}
return posts;
}


CntIrq = function(port){

import thread.command;

Pcom = ..raw.loadDll("\res\Pcomm.dll");
Rxdata = ..raw.buffer(1000,0)
var len = ..Pcom.sio_read(port,Rxdata,#Rxdata)
var str = ..string.sub(Rxdata,1,len)
if(len<=0){
return ;
}
str = ..string.fromto(str,936,65001)//GBK 转 utf-8
..thread.command.post("read",str,len,port)
}
CntIrqFuc = ..thread.tostdcall( this.CntIrq ,"void(int)");

start = function(port,baud,stop,parity,databit){
var ret = ..Pcomm.sio_open(port)
if(ret == 0){
..Pcomm.sio_ioctl(port, this.BaudHex[baud], this.StopHex[stop] | this.ParityHex[parity] | this.DatabitHex[databit] )
..Pcomm.sio_cnt_irq(port,owner.CntIrqFuc,1)
}

return ret;
}
close = function(port){
var ret = ..Pcomm.sio_close(port)
return ret;
}
write = function(port,str){
str = ..string.fromto(str,65001,936)
..Pcomm.sio_write(port,str,#str)
}
StrtoHex = function(str){
assert(str,"StrtoHex 参数不能为空")
var _t = ""
str = ..string.fromto(str,65001,936)
for(k,v in {..string.unpack(str)}){
_t ++=..string.format("%X",v )++" "
}
return _t;
}
HextoStr = function(str){
assert(str,"HextoStr 参数不能为空")
var tab = {}
var pattern = "[A-Fa-f\d]{2}" ;
for s in ..string.gmatch(str , pattern ){
..table.push(tab,eval("0x"++s))
}
return ..string.pack(tab);
}
}

/**intellisense()
bujin.Serial() = !Serial.
!Serial.Baud = 返回波特率数组
!Serial.Stop = 返回停止位数组
!Serial.parity = 返回数据位数组
!Serial.databit = 返回数据位数组
!Serial.posts() = 返回可用串口号 数组
!Serial.start(串口号,波特率,停止位,校验位,数据位) = @.start(port,baud,stop,parity,databit)
!Serial.write(串口号,数据) = @.write(port,buf)
!Serial.close(port) = 停止串口
!Serial.StrtoHex(str) = 文本转16进制
!Serial.HextoStr(str) = 16进制转文本
!Serial.onRead = @.onRead = function(str,len,port){
__/*串口返回数据*/
}
end intellisense**/
感谢:
群友 周
  • renmin renmin    
    Time:2017-06-15 10:48:18
    谢谢群友的贡献
  • 哇哈哈 哇哈哈    
    Time:2017-06-15 12:50:39
    厉害,学习了......
  • cui cui    
    Time:2017-06-17 00:17:51
    这里有个不错的。
    http://bbs.aardio.org/forum.php?mod=viewthread&tid=417&page=3
[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 11579
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 9141
《边学C语言边赚钱——简码编程入门教程》系列集合 8413
我常用的aardio技巧 8292
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 7128
通过chrome.dll中间件控制外部chrome浏览器 6695
用aardio创建web工程图文讲解(1) 5334
aardio调用nodejs的ws模块做一个简单的聊天通信示例 5144
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 4940
编程入门教程:aardio批量上传文件并显示进度条 4922
乐玩插件AARDIO调用 4521
万能助手入门帮助教程:学会科学地管理工作文件 3921
Aardio文本编辑框控件edit_返回父窗口对象和改变父窗口对象 3905
Aardio文本编辑框控件edit_修改字体颜色数值和获取字体颜色数值 3895
Aardio文本编辑框控件edit_限制字符数 3424
[ 近期热答 ]
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1
aardio内嵌Electron浏览框执行javaScript并获取返回值的解决办法实测有效 1
岁月如流水,静静的流,我是流水上一叶轻轻的扁舟 1