Wince(evc) can 总线 通信 SPI MCP2510
代码两部分分别是发送按钮和接收线程。
void CCanDlg::OnButton2()
{
// TODO: Add your control notification handler code here
int i,k;
unsigned char temp_data[1024];
DWORD length;
temp_data[0] = 0xa5; //标识符ID的低位。//这里是发送数据定义的标识符ID,共4个字节,用后面的代码计算转换后应该是ID:05a5,但接收线程只接收05a4啊,这是怎么回事?
temp_data[1] = 0x05;
temp_data[2] = 0x00;
temp_data[3] = 0x00; //标识符ID的高位。
UpdateData(TRUE);
i = m_TX_EDIT.GetAllocLength();//得到输入的字符串的长度。
for(k=0;k<i;k++)
{
temp_data[k+4] = (unsigned char)(m_TX_EDIT.GetAt(k) & 0xff);//因为头4个事ID,所以从数组的第五位开始存储要发送的数据。
}
WriteFile(hStr,temp_data,i,&length,&m_osWrite); //这句是发送语句,为什么只发送i个字节,而不是发送i+4个呢?
temp_data[0] = 0xa4; //标识符ID的低位。//这里为什么又定义标识符?这个标识符05a4,和接收线程所接受的是一样的。
temp_data[1] = 0x05;
temp_data[2] = 0x00;
temp_data[3] = 0x00; //标识符ID的高位。
WriteFile(hStr,temp_data,7,&length,&m_osWrite); //这里发送的是什么?为什么只发送7位?
UpdateData(FALSE);
}
int ccount = 0;
//CAN_Bus接收线程函数
DWORD RXINT_Thread(PVOID pArg)
{
unsigned int i,k;
int rxid;
unsigned char temp_data[1024];
DWORD length;
CString str1;
CCanDlg *pWnd = (CCanDlg*)pArg;//指针,这样线程里可以调用updatadate等。
while(1)
{
//读取的长度必需12的倍数,如120,240等等。因为一个数据帧为12个字节,
//前面4个是标识符ID,后面8个是数据。
ReadFile(hStr,temp_data,240,&length,&m_osRead);
rxid = 0;
if(length)
{
for(i=0;i<length/12;i++)
{
//读取标识符到rxid;
rxid = temp_data[i*12] + temp_data[(i*12)+1]*0x100;
rxid = rxid + temp_data[(i*12)+2]*0x10000 + temp_data[(i*12)+3]*0x1000000;//将数组tempdate头4位ID,转换成rxid的形式然后判断。
if(rxid == 0x05a4)
{
ccount = 0;
str1= rx_data;
pWnd->UpdateData(TRUE);
m_RX_EDIT= m_RX_EDIT + str1;
memset(rx_data,0,sizeof(rx_data));
pWnd->UpdateData(FALSE);
break;
}
for(k=4;k<12;k++) //读取每帧里的数据到rx_data,即去除标识符。//我认为应该吧这个for放到if(rxid == 0x05a4)里,不然str1= rx_data;就没有数据了。但是实验证明那样做不对,源代码没错。
{
rx_data[ccount++] = temp_data[(i*12)+k];
}
}
memset(temp_data,0,sizeof(temp_data));//相当于清零。
}
Sleep(3); //加延时
}
return 0;
}
相关推荐
前端开发组件示例源码_f1b6a91d详解
前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-5Z6jeSqI1792158476
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;5Z6jeSqI1792158476 sdhmgggw168.com www.shangliangwangye.com www.sdbing.net migu.blsxex.abxlbz.sc.cn www.safespeed.net.cn
高校如何通过科技报告服务提升技术转移转化效率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
科技服务机构如何提升服务大企业的技术诊断能力?.docx
科技服务机构如何提升服务大企业的技术诊断能力?


