OK
This commit is contained in:
parent
cb2a256dc5
commit
a383ba31c3
@ -6,7 +6,6 @@
|
||||
</folder>
|
||||
<folder name="窗体文件" path="dlg" comment="目录" embed="true" local="false" ignored="false">
|
||||
<file name="about.aardio" path="dlg\about.aardio" comment="dlg\about.aardio"/>
|
||||
<file name="诊断子窗口.aardio" path="dlg\诊断子窗口.aardio" comment="dlg\诊断子窗口.aardio"/>
|
||||
</folder>
|
||||
<folder name="user" path="user" embed="true" comment="目录" local="false" ignored="false">
|
||||
<file name="CanThread.aardio" path="user\CanThread.aardio" comment="user\CanThread.aardio"/>
|
||||
|
@ -1,67 +0,0 @@
|
||||
import win.ui;
|
||||
/*DSG{{*/
|
||||
var winform = win.form(text="诊断读取";right=679;bottom=319;border="thin";max=false;mode="popup")
|
||||
winform.add(
|
||||
btnDID_1701={cls="button";text="电机当前位置霍尔数";left=36;top=162;right=163;bottom=193;z=5};
|
||||
btnDID_1702={cls="button";text="软止点位置霍尔数";left=36;top=203;right=163;bottom=234;z=6};
|
||||
btnDID_1706={cls="button";text="软止点学习状态";left=178;top=40;right=305;bottom=71;z=7};
|
||||
btnDID_1707={cls="button";text="座椅电机电流";left=178;top=80;right=305;bottom=111;z=8};
|
||||
btnDID_1708={cls="button";text="模块输入信号状态";left=178;top=121;right=305;bottom=152;z=9};
|
||||
btnDID_1709={cls="button";text="模块输出信号状态";left=178;top=162;right=305;bottom=193;z=11};
|
||||
btnDID_170B={cls="button";text="系统供电电压";left=178;top=203;right=305;bottom=234;z=10};
|
||||
btnDID_F187={cls="button";text="车辆备用零部件编号";left=36;top=40;right=163;bottom=71;z=2};
|
||||
btnDID_F18A={cls="button";text="供应商公司名称代码";left=36;top=80;right=163;bottom=111;z=3};
|
||||
btnDID_F197={cls="button";text="ECU 系统名称";left=36;top=121;right=163;bottom=152;z=4};
|
||||
groupbox={cls="groupbox";text="DID";left=16;top=12;right=328;bottom=260;edge=1;z=1};
|
||||
groupbox2={cls="groupbox";text="DTC";left=343;top=12;right=655;bottom=260;edge=1;z=12}
|
||||
)
|
||||
/*}}*/
|
||||
|
||||
winform.btnDID_F187.oncommand = function(id,event){
|
||||
DiagReadDID(0xF187);
|
||||
}
|
||||
|
||||
winform.btnDID_F18A.oncommand = function(id,event){
|
||||
DiagReadDID(0xF18A);
|
||||
}
|
||||
|
||||
winform.btnDID_F197.oncommand = function(id,event){
|
||||
DiagReadDID(0xF197);
|
||||
}
|
||||
|
||||
winform.btnDID_1701.oncommand = function(id,event){
|
||||
DiagReadDID(0x1701);
|
||||
}
|
||||
|
||||
winform.btnDID_1702.oncommand = function(id,event){
|
||||
DiagReadDID(0x1702);
|
||||
}
|
||||
|
||||
winform.btnDID_1706.oncommand = function(id,event){
|
||||
DiagReadDID(0x1706);
|
||||
}
|
||||
|
||||
winform.btnDID_1707.oncommand = function(id,event){
|
||||
DiagReadDID(0x1707);
|
||||
}
|
||||
|
||||
winform.btnDID_1708.oncommand = function(id,event){
|
||||
DiagReadDID(0x1708);
|
||||
}
|
||||
|
||||
winform.btnDID_1709.oncommand = function(id,event){
|
||||
DiagReadDID(0x1709);
|
||||
}
|
||||
|
||||
winform.btnDID_170B.oncommand = function(id,event){
|
||||
DiagReadDID(0x170B);
|
||||
}
|
||||
|
||||
winform.onClose = function(hwnd,message,wParam,lParam){
|
||||
winform.show(false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
winform.show();
|
||||
win.loopMessage();
|
||||
return winform;
|
@ -55,6 +55,25 @@ namespace usb2canfd{
|
||||
BYTE CAN_TXFP; //发送优先级管理,0-标识符决定,1-发送请求顺序决定
|
||||
}
|
||||
|
||||
class CAN_FILTER_CONFIG{
|
||||
ctor( /*输入构造函数所需要的参数*/ ){
|
||||
|
||||
};
|
||||
type=me;
|
||||
/*对象的所有成员必须用分号分隔*/
|
||||
BYTE Enable; //使能该过滤器,1-使能,0-禁止
|
||||
BYTE FilterIndex; //过滤器索引号,取值范围为0到13
|
||||
BYTE FilterMode; //过滤器模式,0-屏蔽位模式,1-标识符列表模式
|
||||
BYTE ExtFrame; //过滤的帧类型标志,为1 代表要过滤的为扩展帧,为0 代表要过滤的为标准帧。
|
||||
INT ID_Std_Ext; //验收码ID
|
||||
INT ID_IDE; //验收码IDE
|
||||
INT ID_RTR; //验收码RTR
|
||||
INT MASK_Std_Ext; //屏蔽码ID,该项只有在过滤器模式为屏蔽位模式时有用
|
||||
INT MASK_IDE; //屏蔽码IDE,该项只有在过滤器模式为屏蔽位模式时有用
|
||||
INT MASK_RTR; //屏蔽码RTR,该项只有在过滤器模式为屏蔽位模式时有用
|
||||
}
|
||||
|
||||
|
||||
//CANfd信息帧的数据类型定义
|
||||
class CANFD_MSG{
|
||||
ctor( /*输入构造函数所需要的参数*/ ){
|
||||
@ -137,7 +156,7 @@ namespace usb2canfd{
|
||||
//加载DLL
|
||||
LoadDll = function(){
|
||||
try{
|
||||
DllHandle = ..raw.loadDll("USB2XXX.dll")
|
||||
DllHandle = ..raw.loadDll("\USB2XXX.dll")
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
@ -191,6 +210,30 @@ namespace usb2canfd{
|
||||
return AvailableHW;
|
||||
}
|
||||
|
||||
SetFilter = function(index){
|
||||
CANFilter = ..usb2canfd.CAN_FILTER_CONFIG();
|
||||
CANFilter.FilterIndex = 0;
|
||||
CANFilter.Enable = 1;
|
||||
CANFilter.ExtFrame = 0; //需要过滤接收的帧为标准帧
|
||||
CANFilter.FilterMode = 1;//标识符列表模式
|
||||
CANFilter.ID_IDE = 0; //接收到的数据帧IDE必须为1,也就是必须为扩展帧数据
|
||||
CANFilter.ID_RTR = 0; //接收到的帧类型必须为数据帧
|
||||
CANFilter.ID_Std_Ext = 0x620;//接收到的帧ID必须等于CANFilter.ID_Std_Ext设置的值
|
||||
var ret = DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||
|
||||
CANFilter.FilterIndex = 1;
|
||||
CANFilter.ID_Std_Ext = 0x610;
|
||||
var ret = DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||
|
||||
|
||||
for(i=2;13;1){
|
||||
CANFilter.FilterIndex = i;
|
||||
CANFilter.Enable = 0;
|
||||
DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//打开设备,包括初始化通道
|
||||
OpenDevice = function(index,channel,canfd){
|
||||
if(index > HwNum)
|
||||
@ -227,7 +270,7 @@ namespace usb2canfd{
|
||||
canconfig.CAN_Mode = 0x80;//0-正常模式 1-环回模式 0x80终端电阻
|
||||
|
||||
canconfig.CAN_ABOM = 0;//禁止自动离线
|
||||
canconfig.CAN_NART = 1;//禁止报文重传
|
||||
canconfig.CAN_NART = 0;//禁止报文重传
|
||||
canconfig.CAN_RFLM = 0;//FIFO满之后覆盖旧报文
|
||||
canconfig.CAN_TXFP = 1;//发送请求决定发送顺序
|
||||
//配置波特率,波特率 = 42M/(BRP*(SJW+BS1+BS2))
|
||||
@ -237,6 +280,7 @@ namespace usb2canfd{
|
||||
canconfig.CAN_SJW = 2;
|
||||
ret = DllHandle.CAN_Init(AvailableHW[index].hLINHW,channel,canconfig);
|
||||
//console.log("init ret = " + ret);
|
||||
this.SetFilter(index);
|
||||
}
|
||||
|
||||
canfd_connected = canfd;
|
||||
@ -349,14 +393,22 @@ namespace usb2canfd{
|
||||
else {
|
||||
//CAN
|
||||
do{
|
||||
var msgbuf = ..usb2canfd.CAN_MSG();
|
||||
ret = DllHandle.CAN_GetMsgWithSize(Hwconnected,CANIndex,msgbuf,1);
|
||||
//raw.convertArray(raw.sizeof(..usb2canfd.CAN_MSG())
|
||||
var msgbuf = {};
|
||||
for(i=1;10;1){
|
||||
//msgbuf.push(new ..usb2canfd.CAN_MS())
|
||||
var temp = ..usb2canfd.CAN_MSG()
|
||||
..table.push(msgbuf,temp);
|
||||
}
|
||||
|
||||
//var msgbuf = ..raw.toarray(10,"struct",..usb2canfd.CAN_MS);
|
||||
ret = DllHandle.CAN_GetMsgWithSize(Hwconnected,CANIndex,msgbuf[1],1);
|
||||
if(ret == 1){
|
||||
var data = {};
|
||||
for(i=1;msgbuf.DataLen;1){
|
||||
data[i] = msgbuf.Data[i];
|
||||
for(i=1;msgbuf[1].DataLen;1){
|
||||
data[i] = msgbuf[1].Data[i];
|
||||
}
|
||||
var msg = {"id"=msgbuf.ID;"data"=data;};//
|
||||
var msg = {"id"=msgbuf[1].ID;"data"=data;};//
|
||||
..table.push(retdata,msg);
|
||||
}
|
||||
}while(ret > 0)
|
||||
@ -388,6 +440,19 @@ namespace usb2canfd{
|
||||
return ret,2,res_data;
|
||||
}
|
||||
|
||||
SetPower = function(state){
|
||||
var ret = DllHandle.LIN_EX_CtrlPowerOut(Hwconnected,state);
|
||||
return ret;
|
||||
}
|
||||
|
||||
GetPower = function(){
|
||||
var buf = ..raw.buffer(10);
|
||||
var ret = DllHandle.LIN_EX_GetVbatValue(Hwconnected,buf);
|
||||
|
||||
return ret,buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
19
main.aardio
19
main.aardio
@ -86,6 +86,14 @@ mainForm.btnFresh.oncommand = function(id,event){
|
||||
|
||||
mainForm.btnConnect.oncommand = function(id,event){
|
||||
var canfd_check = 0x80;//mainForm.checkbox.checked?0x80:0x00;
|
||||
var devstr = mainForm.cbbDev.selText;
|
||||
var devhw = string.slice(devstr,9,9);
|
||||
|
||||
if(devhw == 4)
|
||||
{
|
||||
//Display(devhw);
|
||||
canfd_check = 0x00;
|
||||
}
|
||||
::PostThreadMessage(thrdId,101,mainForm.cbbDev.selIndex,(mainForm.cbbChannel.selIndex - 1)|canfd_check)//自定义消息
|
||||
/*
|
||||
var ret = CANHw.OpenDevice(mainForm.cbbDev.selIndex,mainForm.cbbChannel.selIndex - 1);//通道为0和1
|
||||
@ -119,6 +127,7 @@ listener.$SetProgress = function(pos){
|
||||
}
|
||||
|
||||
listener.$Connected = function(){
|
||||
thrdTable.设备连接状态 = 1;
|
||||
mainForm.btnConnect.disabled = true;
|
||||
mainForm.btnFresh.disabled = true;
|
||||
mainForm.cbbDev.disabled = true;
|
||||
@ -133,12 +142,20 @@ listener.$SendEnd = function(isSuccess){
|
||||
Display("刷写成功,用时 " + usetime + " S")
|
||||
}
|
||||
}
|
||||
|
||||
import thread.table;
|
||||
thrdTable = thread.table("多线程共享数据");
|
||||
thrdTable.设备连接状态 = 0;
|
||||
thrdTable.设备 = {};
|
||||
thrdTable.test = "123"
|
||||
thrdTable["文件加载状态"] = false;
|
||||
thrdTable["电源电压"] = 0;
|
||||
//线程函数
|
||||
var CanThread = function(){
|
||||
//线程函数内部要添加自已的import语句
|
||||
import win;
|
||||
import console;
|
||||
import thread.table;
|
||||
thrdTable = thread.table("多线程共享数据");
|
||||
//console.log("线程开始运行")
|
||||
loadcodex("\user\CanThread.aardio");//加载线程程序
|
||||
//在子线程启动消息循环
|
||||
|
@ -79,6 +79,21 @@ FuncLoopMsg = function(msg){
|
||||
}
|
||||
}
|
||||
|
||||
FuncReadDeviceVersion = function(id){
|
||||
var ret,DeviceInfo,funcstr = CANHw.GetDevInfo(id);
|
||||
if(ret != 0){
|
||||
var v1 = (DeviceInfo.FirmwareVersion>>24)&0xff;
|
||||
var v2 = (DeviceInfo.FirmwareVersion>>16)&0xff;
|
||||
var v3 = DeviceInfo.FirmwareVersion&0xffff;
|
||||
FuncDisplay("固件版本"++v1++"."++v2++"."++v3)
|
||||
}
|
||||
else {
|
||||
FuncDisplay("读取失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
FuncSetCANID = function(req,resp){
|
||||
DiagReqID = req;
|
||||
DiagRespID = resp;
|
||||
@ -95,6 +110,19 @@ FuncSendMsg = function(no){
|
||||
}
|
||||
}
|
||||
|
||||
FuncPowerCtrl = function(state){
|
||||
var ret = CANHw.SetPower(state);
|
||||
return ret;
|
||||
}
|
||||
|
||||
FuncGetPowerVal = function(){
|
||||
var ret,buf = CANHw.GetPower();
|
||||
var val = (buf[2]<<8) + buf[1];
|
||||
//console.dumpJson(buf);
|
||||
FuncDisplay("BAT电压"++val++"mV")
|
||||
thrdTable["电源电压"] = val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
FuncFreshHw = function(){
|
||||
@ -104,6 +132,7 @@ FuncFreshHw = function(){
|
||||
}
|
||||
else {
|
||||
FuncDisplay("找到硬件")
|
||||
thrdTable.设备 = CANHw.GetAvailableHW()
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,19 +225,29 @@ FuncStartBoot = function(){
|
||||
stopflag = 0;
|
||||
}
|
||||
|
||||
var delay = function(w){
|
||||
while(w){
|
||||
for(i=1;50000;1)
|
||||
{
|
||||
}
|
||||
w -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
var PackNext = 0x21;
|
||||
var Packdata = {};
|
||||
var PackID = 0;
|
||||
var FuncSendPackage = function(){
|
||||
while(#Packdata > 0)
|
||||
{
|
||||
sleep(0.3);
|
||||
//sleep(1);
|
||||
delay(2);
|
||||
var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
|
||||
var max = #Packdata > 7 ? 7 : #Packdata;
|
||||
for(i=1;max;1){
|
||||
data[i+1] = table.remove(Packdata);
|
||||
}
|
||||
sleep(1);
|
||||
//sleep(0.3);
|
||||
CANHw.SendMsg(PackID,data);
|
||||
|
||||
PackNext += 1;
|
||||
@ -288,6 +327,6 @@ timer1.onTimer = function(){
|
||||
|
||||
}
|
||||
timer1.enable();
|
||||
FuncDisplay("正在运行");
|
||||
FuncDisplay("CAN线程正在运行");
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user