/// <summary> /// tsapp_enumerate_hw_devices函数必须在App未连接状态下才能够执行! /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnGetDeviceNum_Click(object sender, EventArgs e) { int hardwareNum = 0; TLIBHWInfo tmp = new TLIBHWInfo(0); string retMessage = TsMasterApi.tsapp_get_error_description(TsMasterApi.tsapp_enumerate_hw_devices(out hardwareNum)); if (retMessage == "OK") { LogDeviceInformation("Hardware Num:" + hardwareNum.ToString()); tBDeviceNumber.Text = hardwareNum.ToString(); cbbDeviceIndex.Items.Clear(); for (int i = 0; i < hardwareNum; i++) { cbbDeviceIndex.Items.Add(i.ToString()); } if (hardwareNum > 0) { cbbDeviceIndex.SelectedIndex = 0; } } else { LogDeviceInformation(retMessage); } }
private void button4_Click(object sender, EventArgs e) { TLIBCANFD[] canBuffer = new TLIBCANFD[10]; int revCnt = 0; revCnt = TsMasterApi.tsfifo_receive_canfd_message_list(ref canBuffer, 10, APP_CHANNEL.CHN1, READ_TX_RX_DEF.TX_RX_MESSAGES); //如果执行失败,请检查是否通过TsMasterApi.tsapp_enable_receive_fifo();开启了内部Buffer if (revCnt == 0) { Log("No Message Received!"); return; } for (int i = 0; i < revCnt; i++) { string msg = "CANFD Msg: "; if (canBuffer[i].FIsTx) { msg += "Tx "; } else { msg += "Rx "; } msg += canBuffer[i].FIdentifier.ToString("X8"); Log(msg); } }
private void btnDeleteAllCANPeriodicMessages_Click(object sender, EventArgs e) { if (TsMasterApi.tsapp_delete_cyclic_msgs() == 0) { Log("Delete All Period CAN Message Success!"); } }
private void btnAddApplication_Click(object sender, EventArgs e) { if (TsMasterApi.tsapp_add_application(tbApplicationName.Text) == 0) { Log("Add Application Success:" + tbApplicationName.Text); } }
private void InternalRegisterEvents() { // register only one of them: CAN or CANFD TsMasterApi.tsapp_register_event_can((IntPtr)0, vCANQueueEventObj); TsMasterApi.tsapp_register_event_canfd((IntPtr)0, vCANFDQueueEventObj); TsMasterApi.tsapp_register_event_lin((IntPtr)0, vLINQueueEventObj); }
private void btnDeleteChannelMapping_Click(object sender, EventArgs e) { if (TsMasterApi.tsapp_del_mapping_verbose(FProgramName, (TLIBApplicationChannelType)cbbChannelType1.SelectedIndex, (APP_CHANNEL)cbbAppChannelIndex.SelectedIndex) == 0) { Log("Delete Mapping Success"); } }
private void button2_Click(object sender, EventArgs e) { if (cbbWindowName.Text.Trim() == "") { MessageBox.Show("请先选择一个窗体名称!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TsMasterApi.tsapp_show_tsmaster_window(cbbWindowName.Text.Trim(), false); }
private void btnGetApplicationList_Click(object sender, EventArgs e) { IntPtr applicationList = new IntPtr(); if (TsMasterApi.tsapp_get_application_list(ref applicationList) == 0) { string appList = Marshal.PtrToStringAnsi(applicationList); tbApplicationList.Text = appList; } }
private void btnGetChannelMapping_Click(object sender, EventArgs e) { TLIBTSMapping m = new TLIBTSMapping(); if (TsMasterApi.tsapp_get_mapping_verbose(FProgramName, (TLIBApplicationChannelType)cbbChannelType1.SelectedIndex, (APP_CHANNEL)cbbAppChannelIndex.SelectedIndex, ref m) == 0) { Log("Get Mapping Success"); MessageBox.Show("HardwareName:" + m.GetHWDeviceName() + "HardwareChannel:" + m.FHWChannelIndex.ToString()); } }
private void btnDisconnectApplication_Click(object sender, EventArgs e) { if (TsMasterApi.tsapp_disconnect() == 0) { Log("Disconnect Application Success:" + FProgramName); } else { Log("Disconnect Application Failed:" + FProgramName); } }
private Boolean CheckResultOK(int AResultCode) { if (AResultCode == 0) { return(true); } else { Log("Error occured: " + TsMasterApi.tsapp_get_error_description(AResultCode)); return(false); } }
private void btnSetCANSignalValue_Click(object sender, EventArgs e) { //输入原始的CAN报文,报文名称,信号名称,直接提取出对应的信号名称 TLIBCAN canObj = new TLIBCAN(0, 0x123, true, false, false, 8); //也可以创建一个全局的CAN报文,每次只修改信号值 srcSignalValue += 1; if (CheckResultOK(TsMasterApi.tsdb_set_signal_value_can(ref canObj, tBMessageName.Text, tBSignalName.Text, srcSignalValue))) { Log("Set SignalValue:" + srcSignalValue.ToString("F2") + " Success!"); } TsMasterApi.tsapp_add_cyclic_msg_can(ref canObj, 10); }
private void btnStartLogging_Click(object sender, EventArgs e) { if (btnStartLogging.Text == "Start Logging") { TsMasterApi.tsapp_start_logging(@".\TestData" + DateTime.Now.ToString("dd-HH-mm-ss") /*+ ".blf"*/); btnStartLogging.Text = "Stop Logging"; } else { TsMasterApi.tsapp_stop_logging(); btnStartLogging.Text = "Start Logging"; } }
private void btnTransmitCANFDSync_Click(object sender, EventArgs e) { TLIBCANFD canMsg = new TLIBCANFD(0, 0x456, true, false, false, 8); if (TsMasterApi.tsapp_transmit_canfd_sync(ref canMsg, 200) == 0) { Log("Sync Send CANFD Message Success!"); } else { Log("Sync Send CANFD Message Failed"); } }
/// <summary> /// 常见错误:通道映射错误。比如设置了2路CAN,2路LIN。为CAN映射了硬件,但是没有为LIN通道映射硬件通道,就会造成错误! /// 解决办法:如果不用对应的通道,则把对应通道数设置为0 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConnectApplication_Click(object sender, EventArgs e) { if (CheckResultOK(TsMasterApi.tsapp_connect())) { Log("Connect Application Success!"); TsMasterApi.tsfifo_enable_receive_fifo(); Log("Start Receive FIFO!"); //如果不使能内部FIFO,无法使用Receive函数读取内部报文 } else { Log("Connect Application Failed! Please check the mapping table and whether the Hardware is Ready?!"); } }
private void btnSetApplicationLINCount_Click(object sender, EventArgs e) { try { int chnCount = Convert.ToInt32(tbLINCount.Text); if (TsMasterApi.tsapp_set_lin_channel_count(chnCount) == 0) { Log("Set LIN Channel Count Success!"); } } catch { } }
private void btnGetAppointtedDeviceInfo_Click(object sender, EventArgs e) { if (cbbDeviceIndex.SelectedIndex < 0) { LogDeviceInformation("Please select device Index first!"); return; } TLIBHWInfo tmpDeviceInfo = new TLIBHWInfo(0); if (TsMasterApi.tsapp_get_hw_info_by_index(cbbDeviceIndex.SelectedIndex, ref tmpDeviceInfo) == 0) { LogDeviceInformation(tmpDeviceInfo.FDeviceInformation); } }
private void btnGetApplicationLINCount_Click(object sender, EventArgs e) { try { int chnCount = 0; if (TsMasterApi.tsapp_get_lin_channel_count(ref chnCount) == 0) { tbGetLINCount.Text = chnCount.ToString(); Log("Set LIN Channel Count Success!"); } } catch { } }
private void btnDeleteCANPeridicMessage_Click(object sender, EventArgs e) { try { byte canid = Convert.ToByte(tbDelPeriodCANID.Text, 16); TLIBCAN canObj = new TLIBCAN(0, canid, true, false, false, 0); if (TsMasterApi.tsapp_delete_cyclic_msg_can(ref canObj) == 0) { Log("Delete Period CAN Message Success!"); } } catch { } }
private void btnUnloadDBC_Click(object sender, EventArgs e) { try { UInt32 ADBCHandle = Convert.ToUInt32(tBUnloadDBCHandle.Text); if (CheckResultOK(TsMasterApi.tsdb_unload_can_db(ADBCHandle))) { Log("Log DBC Success!"); } } catch { MessageBox.Show("DBC Handle is UINT32 data type", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void btnLoadDBCPath_Click(object sender, EventArgs e) { if (CheckResultOK(TsMasterApi.tsdb_unload_can_dbs())) { Log("Unload DBC Success!"); } //Database必须是绝对路径 if (CheckResultOK(TsMasterApi.tsdb_load_can_db(Application.StartupPath + @".\" + tbDBCPath.Text, new APP_CHANNEL[] { APP_CHANNEL.CHN1, APP_CHANNEL.CHN2, APP_CHANNEL.CHN3, APP_CHANNEL.CHN4 }, ref FDBCHandle))) { tBUnloadDBCHandle.Text = FDBCHandle.ToString(); tbDBCQueryHandle.Text = FDBCHandle.ToString(); Log("Load DBC Success!"); } }
private void btnSetApplicationChannel1Mapping_Click(object sender, EventArgs e) { if ((TLIBBusToolDeviceType)cbbDeviceType1.SelectedIndex == TLIBBusToolDeviceType.PEAK_USB_DEVICE) { if (TsMasterApi.tsapp_set_mapping_verbose(tbApplicationName.Text, (TLIBApplicationChannelType)cbbChannelType1.SelectedIndex, (APP_CHANNEL)cbbAppChannelIndex.SelectedIndex, cbbDeviceType1.Text, (TLIBBusToolDeviceType)cbbDeviceType1.SelectedIndex, -1, 0, (HARDWARE_CHANNEL)0x51) == 0) { Log("Mappings of channel " + (1 + (int)0).ToString() + " has been set"); } } else { if (TsMasterApi.tsapp_set_mapping_verbose(tbApplicationName.Text, (TLIBApplicationChannelType)cbbChannelType1.SelectedIndex, (APP_CHANNEL)cbbAppChannelIndex.SelectedIndex, cbbDeviceType1.Text, (TLIBBusToolDeviceType)cbbDeviceType1.SelectedIndex, cbbSubDeviceType1.SelectedIndex, 0, (HARDWARE_CHANNEL)cbbHardwareChannel1.SelectedIndex) == 0) { Log("Mappings of channel " + (1 + (int)0).ToString() + " has been set"); } } }
private void btnAddCANPerodicMessage_Click(object sender, EventArgs e) { try { byte canid = Convert.ToByte(tbAddPeriodCANID.Text, 16); TLIBCAN canObj = new TLIBCAN(0, canid, true, false, false, 0); canObj.FDLC = 8; canObj.FData[0] = 0xAA; canObj.FData[1] = 0xBB; Single intervalTime = Convert.ToSingle(tbAddPeriodCANIntervalTime.Text); if (TsMasterApi.tsapp_add_cyclic_msg_can(ref canObj, intervalTime) == 0) { Log("Add Period CAN Message Success!"); } } catch { } }
private void btnQuery_Click(object sender, EventArgs e) { string retMsg = TsMasterApi.tsdb_get_can_db_info( Convert.ToUInt32(tbDBCQueryHandle.Text), cbbQueryType.SelectedIndex, Convert.ToInt32(tbSubIdx.Text), Convert.ToInt32(tbSubSubIdx.Text) ); if (retMsg != "") { tBQueryResult.Text += retMsg + "\r\n"; Log("Query success"); } else { Log("Database index invalid or parameter invalid"); } }
private void btnReadCANSignalValue_Click(object sender, EventArgs e) { //输入原始的CAN报文,报文名称,信号名称,直接提取出对应的信号名称 if (cbbDBCChannel.SelectedIndex < 0) { Log("Please Select DBC Channel First!"); return; } TLIBCAN canObj = new TLIBCAN((APP_CHANNEL)cbbDBCChannel.SelectedIndex, 0x551, true, false, false, 8); for (int i = 0; i < 8; i++) { canObj.FData[i] = 0xFF; } double sigValue = 0; if (CheckResultOK(TsMasterApi.tsdb_get_signal_value_can(ref canObj, "Wheel_Speed", "FL_Speed", ref sigValue))) { Log("SignalValue is:" + sigValue.ToString()); } }
private void Form1_Load(object sender, EventArgs e) { FProgramName = Path.GetFileNameWithoutExtension(Application.ExecutablePath); //首先获取应用程序名称 tbApplicationName.Text = FProgramName; LoadDefaultState(); // //初始化API模块:这是后续调用所有TsMasterApi函数的前提 TsMasterApi.initialize_lib_tsmaster(FProgramName); //设置需要探测的硬件 TsMasterApi.tsapp_set_vendor_detect_preferences(true, true, true, false, false, false); // vCANQueueEventObj += new TCANQueueEvent(OnCANRxEvent); vCANFDQueueEventObj += new TCANFDQueueEvent(OnCANFDRxEvent); vLINQueueEventObj += new TLINQueueEvent(OnLINRxEvent); //注册接收回调函数:在每一次的回调函数vCANQueueEventObj中刷新数据段 if (TsMasterApi.tsapp_register_event_can((IntPtr)0, vCANQueueEventObj) != 0x00) { Log("Register CANRx Failed!"); } cbbQueryType.SelectedIndex = 0; }
private void btnAddReplayEngine_Click(object sender, EventArgs e) { int AReplayIndex = 0; OpenFileDialog openFileObj = new OpenFileDialog(); openFileObj.Filter = "blfFile|*.blf"; openFileObj.FilterIndex = 0; if (openFileObj.ShowDialog() == DialogResult.OK) { string fileName = openFileObj.FileName; TsMasterApi.tslog_stop_online_replays(); int retValue = TsMasterApi.tslog_del_online_replay_configs(); if (retValue != 0) { MessageBox.Show("Error:" + retValue.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } retValue = TsMasterApi.tslog_add_online_replay_config(fileName, ref AReplayIndex); if (retValue != 0) { MessageBox.Show("Error:" + retValue.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } retValue = TsMasterApi.tslog_set_online_replay_config(AReplayIndex, "Test", fileName, false, true, TsMasterApi.TLIBOnlineReplayTimingMode.ortImmediately, 0, true, false, "1,0,0,0,0,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32"); //必须32个数字,否则Mapping失败 if (retValue != 0) { MessageBox.Show("Error:" + retValue.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } retValue = TsMasterApi.tslog_start_online_replay(AReplayIndex); if (retValue != 0) { MessageBox.Show("Error:" + retValue.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Log("Load Blf File Success!"); } }
private void btnSetCANBaudrate_Click(object sender, EventArgs e) { int i; Single b; try { i = cbbAppChannel_CAN.SelectedIndex; b = Convert.ToSingle(tBCANBaudrate.Text); if (TsMasterApi.tsapp_configure_baudrate_can(i, b, false, chkCANResistor.Checked) == 0) { Log("CAN Channel " + (i + 1).ToString() + " baudrate has been configured"); } else { Log("CAN Channel " + (i + 1).ToString() + " baudrate failed"); } } catch { } }
private void btnGetAllHardwareInfos_Click(object sender, EventArgs e) { int hardwareNum = 0; TLIBHWInfo tmpDeviceInfo = new TLIBHWInfo(0); string retMessage = TsMasterApi.tsapp_get_error_description(TsMasterApi.tsapp_enumerate_hw_devices(out hardwareNum)); if (retMessage == "OK") { LogDeviceInformation("Hardware Num:" + hardwareNum.ToString()); } else { Log(retMessage); LogDeviceInformation("Enum hardware Info Failed!"); } for (int i = 0; i < hardwareNum; i++) { if (TsMasterApi.tsapp_get_hw_info_by_index(i, ref tmpDeviceInfo) == 0) { LogDeviceInformation(tmpDeviceInfo.FDeviceInformation); } } }
private void btnSetCANFDBaudrate_Click(object sender, EventArgs e) { int i; Single b, c; try { i = cbbAppChannel_CANFD.SelectedIndex; b = Convert.ToSingle(tBCANFDArbBaudrate.Text); c = Convert.ToSingle(tBCANFDDataBaudrate.Text); if (TsMasterApi.tsapp_configure_baudrate_canfd(i, b, c, TLIBCANFDControllerType.lfdtISOFDCAN, TLIBCANFDControllerMode.lfdmNormal, chkCANResistor.Checked) == 0) { Log("CANFD Channel " + (i + 1).ToString() + " baudrate has been configured"); } else { Log("CANFD Channel " + (i + 1).ToString() + " baudrate failed"); } } catch { } }