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 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 OnCANRxEvent(IntPtr AObj, ref TLIBCAN AData) { if (AData.FIsTx) { byte canid = Convert.ToByte(tbAddPeriodCANID.Text, 16); if (AData.FIdentifier == canid) { AData.FData[0]++; AData.FData[1]--; //更新数据还是采用tsapp_add_cyclic_msg_can函数,不新增API if (TsMasterApi.tsapp_add_cyclic_msg_can(ref AData, Convert.ToSingle(tbAddPeriodCANIntervalTime.Text)) == 0) { //避免直接跨线程操作界面控件! } } } if (AData.FIdentifier == 0x123) { if (TsMasterApi.tsdb_get_signal_value_can(ref AData, tBMessageName.Text, tBSignalName.Text, ref testSignalValue) == 0x00) { //ReadData Success } } }