利用c++深究周立功usbcan盒的学习
利用c++深究周立功usbcan盒的学习
根据某新能源电动车辆的通讯协议,利用c++开发上位机软件,通过周立功usbcan盒将开发的上位机与车辆OBD口连接,从而可以开发更多的上位机,用来对新能源车辆的监控。
以下为部分C++代码主要实现上位机读取信息的过程:
CZlgcanDlg::CZlgcanDlg(CWnd* pParent /=NULL/)
: CDialog(CZlgcanDlg::IDD, pParent)
, device_type_index_(0)
, device_index_(0)
, channel_index_(0)
, work_mode_index_(0)
, abit_baud_index_(0)
, dbit_baud_index_(0)
, custom_baud_enable_(FALSE)
, resistance_enable_(TRUE)
, frame_type_index_(0)
, protocol_index_(1)
, canfd_exp_index_(0)
, send_type_index_(0)
, acc_code_(T(“00000000”))
, acc_mask(T(“FFFFFFFF”))
, id(T(“00000001”))
, datas(T(“00 11 22 33 44 55 66 77”))
, custom_baudrate(T(""))
, filter_mode(1)
, net_mode_index_(0)
, baud_index_(0)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
device_opened_ = FALSE;
start_ = FALSE;
}
void CZlgcanDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_CBIndex(pDX, IDC_COMBO_DEVICE, device_type_index_);
DDX_CBIndex(pDX, IDC_COMBO_DEVICE_INDEX, device_index_);
DDX_CBIndex(pDX, IDC_COMBO_CHANNEL_INDEX, channel_index_);
DDX_CBIndex(pDX, IDC_COMBO_DEVICE_INDEX2, work_mode_index_);
DDX_CBIndex(pDX, IDC_COMBO_ABIT, abit_baud_index_);
DDX_CBIndex(pDX, IDC_COMBO_ABIT2, dbit_baud_index_);
DDX_CBIndex(pDX, IDC_COMBO_BAUD, baud_index_);
DDX_Check(pDX, IDC_CHECK_CUSTOM_BAUDRATE, custom_baud_enable_);
DDX_Check(pDX, IDC_CHECK_RESISTANCE, resistance_enable_);
DDX_CBIndex(pDX, IDC_COMBO_FRAME_TYPE, frame_type_index_);
DDX_CBIndex(pDX, IDC_COMBO_PROTOCOL, protocol_index_);
DDX_CBIndex(pDX, IDC_COMBO_CANFD_EXP, canfd_exp_index_);
DDX_CBIndex(pDX, IDC_COMBO_SEND_TYPE, send_type_index_);
DDX_Control(pDX, IDC_LIST1, data_recv_list_);
DDX_Text(pDX, IDC_EDIT_ACC_CODE, acc_code_);
DDV_MaxChars(pDX, acc_code_, 8);
DDX_Text(pDX, IDC_EDIT_ACC_MASK, acc_mask_);
DDV_MaxChars(pDX, acc_mask_, 8);
DDX_Text(pDX, IDC_EDIT_FILTER_START2, id_);
DDV_MaxChars(pDX, id_, 8);
DDX_Text(pDX, IDC_EDIT_FILTER_START3, datas_);
DDX_Control(pDX, IDC_COMBO_DEVICE, ctrl_device_type_);
DDX_Control(pDX, IDC_COMBO_DEVICE_INDEX, ctrl_device_index_);
DDX_Control(pDX, IDC_COMBO_CHANNEL_INDEX, ctrl_channel_index_);
DDX_Text(pDX, IDC_EDIT_CUSTOM_BAUDRATE, custom_baudrate_);
DDX_Control(pDX, IDC_BUTTON_OPEN, ctrl_open_device_);
DDX_Control(pDX, IDC_BUTTON_INITCAN, ctrl_int_can_);
DDX_Control(pDX, IDC_BUTTON_STARTCAN, ctrl_start_can_);
DDX_Control(pDX, IDC_BUTTON_CLOSE, ctrl_close_device_);
DDX_CBIndex(pDX, IDC_COMBO_FILTER_MODE, filter_mode_);
DDX_CBIndex(pDX, IDC_COMBO_NET_MODE, net_mode_index_);
}
BEGIN_MESSAGE_MAP(CZlgcanDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON_OPEN, &CZlgcanDlg::OnBnClickedButtonOpen)
ON_BN_CLICKED(IDC_BUTTON_INITCAN, &CZlgcanDlg::OnBnClickedButtonInitcan)
ON_BN_CLICKED(IDC_BUTTON_STARTCAN, &CZlgcanDlg::OnBnClickedButtonStartcan)
ON_BN_CLICKED(IDC_BUTTON_RESET, &CZlgcanDlg::OnBnClickedButtonReset)
ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CZlgcanDlg::OnBnClickedButtonClose)
ON_BN_CLICKED(IDC_BUTTON_SEND, &CZlgcanDlg::OnBnClickedButtonSend)
ON_CBN_SELCHANGE(IDC_COMBO_DEVICE, &CZlgcanDlg::OnCbnSelchangeComboDevice)
ON_CBN_SELCHANGE(IDC_COMBO_NET_MODE, &CZlgcanDlg::OnCbnSelchangeComboNetMode)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON_CLEAR, &CZlgcanDlg::OnBnClickedButtonClear)
END_MESSAGE_MAP()
以下为波特率的设置:
if (custom_baud_enable_)
{
if (!SetCustomBaudrate())
{
AddData(_T(“设置自定义波特率失败!”));
return;
}
}
else
{
if (!canfdDevice && !SetBaudrate())
{
AddData(_T(“设置波特率失败!”));
return;
}
}
利用c++深究周立功usbcan盒的学习相关推荐
- 周立功CAN盒驱动C#调用方式
#region CAN接受和发送数据定义 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] ...
- Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收 可完成标准和扩展CAN帧YID发送和接收
Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收 可完成标准和扩展CAN帧YID发送和接收,带配置参数自动保存,定时发送,帧类型选择,文本和十六进制等. ...
- Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收 可完成标准和扩展CAN帧YID发送和接收,带配置参数自动保存,定时发送,帧类型选择,文本和十六进制等
Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收 可完成标准和扩展CAN帧YID发送和接收,带配置参数自动保存,定时发送,帧类型选择,文本和十六进制等. ...
- java 调用ecanvci,CANoe CAN总线适配低价解决方案支持所有USBCAN(周立功CAN、PCAN、Kvaser、ValueCAN、NI CAN)...
在汽车通信领域CAN总线使用非常广泛,最强大的工具有Vector Case(10WRMB).Pcan(2KRMB),ZLGCAN(1.5KRMB),KVASER(2KRMB).ValueCAN(4KR ...
- 周立功 zlg PCIe-9120I CAN卡无法使用python开启
2018年走了- 2019年来了- 工作日第一天就排了一颗打雷- 前两天领导指派任务做一个仪表的上位机, 公司用的都是zlg的USB-CAN盒或者PCIe-CAN卡, 且官方提供的接口\例程都是非py ...
- 周立功:专注的力量成就梦想
20年多前,我没考上大学,只读了技工学校,家庭条件并不好.毕业之后,因为就业等现实问题和压力,开始思考出路.偶然的一次机会,也就是81年,从杂志上了解到苹果公司创立的成功,两个年轻人在车库做出了单板机 ...
- 我的25年嵌入式生涯-周立功
http://blog.chinaunix.net/uid-25498312-id-3246377.html <程 序员>杂志的编辑约我写一篇命题作文,想了几天都无从下手不知道写什么才好. ...
- python解析can报文,Python实现Can接收发送 DBC分析报文 周立功ZLG 绘制曲线 支持离线回放.rar...
[实例简介] Python实现Can接收发送 DBC分析报文 绘制曲线 支持离线回放 CAN分析工具 环境:windows & python3 设备:周立功USBCAN-I(可在源码中修改支持 ...
- 周立功: 我的25年嵌入式生涯——非常诚恳之谈
<程序员>杂志的编辑约我写一篇命题作文,想了几天都无从下手不知道写什么才好.在这篇文章里,我不打算将创业的艰辛与喜悦重新回忆一遍,我确实不想去误导大家,因为我所处的年代是一个物质缺乏的年代 ...
- 周立功:我的成功可以复制
<程序员>杂志的编辑约我写一篇命题作文,想了几天都无从下手不知道写什么才好.在这篇文章里,我不打算将创业的艰辛与喜悦重新回忆一遍,我确实不想去误导大家,因为我所处的年代是一个物质缺乏的年代 ...
最新文章
- 【原创视频教程】学生信息管理系统5--学员成绩管理
- android 听筒播放声音
- Leetcode 223. 矩形面积 解题思路及C++实现
- HDFS常用Shell命令
- 设计类网站|超实用的工具型网站!
- mysql根据月份查询订单销售额
- php 是否存在,php判断常量是否存在
- caffe(CPU版本)配置 及MNIST调用
- 2020.10.30文献1:《滇中引水工程香炉山隧洞地应力特征及其活动构造响应》
- DXF文件结构与示意
- Gradle配置及同一应用不同版本配置不同资源文件,不同签名,包名进行打包
- 实习笔记 —— MyBatis III (输入/输出映射)
- 有强烈的危机感,是一种病吗?
- WPS JS详细教程
- Hank老师推荐的一些博客
- VS2017使用点滴
- Prolific USB-to-Serial Comm Port在win8.1下
- 音视频 RTMP协议分析
- 什么是气泡图 怎样绘制气泡思维导图
- 关于实现宿舍共享校园网上网的几种方法~