|
楼主 |
发表于 2010-5-28 00:25:58
|
显示全部楼层
回复 38# wzh823 的帖子
详细说下我哪个步骤复杂了?
我上传的PC程序有三个步骤。大家不要看代码多多有恐惧感,模块就三个。
1.监听LUA数据,接收。
2.LUA的主逻辑模块。
3.与USB设备通讯模块。
这个1和3你应该跟我一样的。你是不是在指2这个比较复杂。
实际上这就是“主控程序”,因为每个人的情况和需求不同,你无需一定要编译定死了发送什么格式的东东。
只要玩家会写些LUA,完事了,他自己写去。程序的灵活性大大加大。
打个比方,我监听,需要个端口,这个参数你可以通过修改LUA文本就完事了。没必要重新编译程序。
并不是所有用户都安装VC的,其实我还是按LO的方式去处理的。
(当然,想做更好的话给那函数再加个IP参数)。
用户只需要修改script.lua中的这个函数:
--收到数据,buf为字符串.
function onServerRecvData(buf)
print ("onServerRecvData ... " .. buf);
--根据格式取出高度,速度。
local _, _, altRad, speed = string.find(buf,"altRad = (%w+).*, speed = (%w+).*,");
if (altRad ~= nil and speed ~= nil) then
--分解数值各位上的数。0~9.
local d0,d1,d2,d3 = parseNum(altRad);
local d4,d5,d6,d7 = parseNum(speed);
print("parseNum >> " .. d0 .. " >> " .. d1 .. " >> " .. d2 .. " >> " .. d3 );
print("parseNum >> " .. d4 .. " >> " .. d5 .. " >> " .. d6 .. " >> " .. d7 );
--向单片机设备发送单片机可识别的数值,即仪表数据。
--暂定的格式是8位数码管,高位表第几个数码管,低位表0~9.
sendtoDevice(0x00, 0x10+d0,0x20+d1,0x30+d2,0x40+d3, 0x50+d4,0x60+d5,0x70+d6,0x80+d7);
end
-- print("onServerRecvData");
end |
|