网站的根目录,高端网站建设要到磐石网络,wordpress伪静态linux,vps装网站管理系统让gpt生成一段代码用来把bin文件通过can总线发出去
c#代码还是比较强大的#xff0c;各种功能基本都是一两行代码就实现了#xff0c;这里记录一下对这个代码的理解和解读
主要代码如下#xff0c;传入bin文件的地址即可将其从指定的can通道发送出去#xff1a;
public …让gpt生成一段代码用来把bin文件通过can总线发出去
c#代码还是比较强大的各种功能基本都是一两行代码就实现了这里记录一下对这个代码的理解和解读
主要代码如下传入bin文件的地址即可将其从指定的can通道发送出去
public void SendBINFile(string binFilePath)
{if (!File.Exists(binFilePath)){Console.WriteLine(BIN file not found: binFilePath);return;}try{// 读取 BIN 文件byte[] binData File.ReadAllBytes(binFilePath);int chunkSize 8; // 每帧发送 8 字节int totalFrames (binData.Length chunkSize - 1) / chunkSize;Console.WriteLine($Sending BIN file: {binFilePath});Console.WriteLine($Total data size: {binData.Length} bytes, Frames: {totalFrames});for (int i 0; i totalFrames; i){// 准备 CAN 消息byte[] frameData new byte[chunkSize];int currentFrameSize Math.Min(chunkSize, binData.Length - i * chunkSize);Array.Copy(binData, i * chunkSize, frameData, 0, currentFrameSize);TPCANMsg canMessage new TPCANMsg{ID 0x123, // 自定义消息 IDLEN (byte)currentFrameSize,MSGTYPE TPCANMessageType.PCAN_MESSAGE_STANDARD,DATA frameData};// 发送 CAN 消息LastStatus PCANBasic.Write(Pcan_Handle, ref canMessage);Thread.Sleep(1);if (LastStatus ! TPCANStatus.PCAN_ERROR_OK){Console.WriteLine($Error sending frame {i 1}: {GetErrorText(LastStatus)});}else{Console.WriteLine($Frame {i 1} sent: {BitConverter.ToString(frameData, 0, currentFrameSize)});}}}catch (Exception ex){Console.WriteLine(Error sending BIN file: ex.Message);}
}
其他都比较简单易懂其中最核心的就是for循环的这部分
for (int i 0; i totalFrames; i){// 准备 CAN 消息byte[] frameData new byte[chunkSize];int currentFrameSize Math.Min(chunkSize, binData.Length - i * chunkSize);Array.Copy(binData, i * chunkSize, frameData, 0, currentFrameSize);TPCANMsg canMessage new TPCANMsg{ID 0x123, // 自定义消息 IDLEN (byte)currentFrameSize,MSGTYPE TPCANMessageType.PCAN_MESSAGE_STANDARD,DATA frameData};// 发送 CAN 消息LastStatus PCANBasic.Write(Pcan_Handle, ref canMessage);Thread.Sleep(1);
其中framedata用来储存当前要发送的数据最大8字节每一个for循环都要进行一次发送。currentFrameSize是当前这轮发送时framedata的尺寸除了最后一帧外全都是8。
Array.Copy(binData, i * chunkSize, frameData, 0, currentFrameSize)是将“bindata”这个bin文件的指定位置i * chunkSize指定大小currentFrameSize的数据复制到framedata中用于发送。
其次Thread.Sleep(1)也是很重要的250k波特率下每秒can总线发送报文的极限是2000条左右为了均衡效率和稳定性我们设置每次发送后延时1ms再继续发送以避免总线过载或者可能发生的错误。
文章转载自: http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.rmryl.cn.gov.cn.rmryl.cn http://www.morning.hhboyus.cn.gov.cn.hhboyus.cn http://www.morning.wlddq.cn.gov.cn.wlddq.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.wtsr.cn.gov.cn.wtsr.cn http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn http://www.morning.cpctr.cn.gov.cn.cpctr.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn http://www.morning.wnkjb.cn.gov.cn.wnkjb.cn http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.stbfy.cn.gov.cn.stbfy.cn http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn http://www.morning.cxsdl.cn.gov.cn.cxsdl.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.dighk.com.gov.cn.dighk.com http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.hgbzc.cn.gov.cn.hgbzc.cn http://www.morning.sfmqm.cn.gov.cn.sfmqm.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.kxyqy.cn.gov.cn.kxyqy.cn http://www.morning.pfggj.cn.gov.cn.pfggj.cn http://www.morning.pymff.cn.gov.cn.pymff.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.rtpw.cn.gov.cn.rtpw.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn http://www.morning.bzlgb.cn.gov.cn.bzlgb.cn http://www.morning.zsrjn.cn.gov.cn.zsrjn.cn http://www.morning.wnjrf.cn.gov.cn.wnjrf.cn http://www.morning.tcylt.cn.gov.cn.tcylt.cn http://www.morning.rccpl.cn.gov.cn.rccpl.cn http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn http://www.morning.ggnkt.cn.gov.cn.ggnkt.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.fbrshjf.com.gov.cn.fbrshjf.com http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn http://www.morning.xkyst.cn.gov.cn.xkyst.cn http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.bctr.cn.gov.cn.bctr.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.sggzr.cn.gov.cn.sggzr.cn http://www.morning.cwgfq.cn.gov.cn.cwgfq.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn http://www.morning.yqqgp.cn.gov.cn.yqqgp.cn http://www.morning.bwqr.cn.gov.cn.bwqr.cn http://www.morning.wlqll.cn.gov.cn.wlqll.cn http://www.morning.qgtbx.cn.gov.cn.qgtbx.cn http://www.morning.rntgy.cn.gov.cn.rntgy.cn http://www.morning.grxbw.cn.gov.cn.grxbw.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.nqlkb.cn.gov.cn.nqlkb.cn http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn http://www.morning.txfxy.cn.gov.cn.txfxy.cn http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn http://www.morning.yrccw.cn.gov.cn.yrccw.cn http://www.morning.pcbfl.cn.gov.cn.pcbfl.cn http://www.morning.psgbk.cn.gov.cn.psgbk.cn http://www.morning.jxltk.cn.gov.cn.jxltk.cn http://www.morning.rdmn.cn.gov.cn.rdmn.cn http://www.morning.khfk.cn.gov.cn.khfk.cn