用于接收数据格式为五位帧头+文本格式的模块串口通信,可用于myrio,mydAQ等开发板。
2024/9/3 22:15:50 25KB labvie 串口通信
1
Labview串口通信,可以实现对帧头帧尾寻找,提取其中的有效信息,针对读取接收缓存区存在对数据以及帧头帧尾截断的情况作了处理,欢迎大家分析参考
2024/3/13 5:39:37 26KB labview 串口通信 数据帧解析
1
单片机接收数据帧帧头帧尾校验数据解析C语言,采用VS2010编译器书写,已经通过验证,单片机里面也十分实用。
双向链表方法。
2023/8/29 4:19:41 917KB 单片机 帧头 帧尾 数据解析
1
自己做的一个IP数据包的捉拿与阐发法度圭表标准,自带试验报告。
C++实现,行使winpcap实现抓包,法度圭表标准有日志文件记实操作。
搜罗以太网DLC帧头阐发、IP数据报报头阐发以及UDP、ICMP、IGMP、TCP的详尽阐发。
不图形界面
2023/5/6 8:13:54 1.21MB IP数据包捕获与分析 winpcap
1
经由linux串口usb-can发送指令抑制电机,经由usb-485去编码器,usb-can有串口协议帧头0x000xe0帧尾0x55
2023/4/14 8:10:13 34KB linuxcan485
1
计算FlexRay网络节点数据帧头CRC的C言语程序
2022/11/17 15:55:35 186KB FlexRay FrameHeader CRC
1
实战思科Cisco模拟器Packettracer使用教程详解,对新手菜鸟有很大协助!第一篇、熟悉界面第二篇、设备管理第三篇、实战实例1、研究应用层和传输层协议实例2、检查路由实例3、研究ICMP数据包实例4、子网和路由器配置实例5、研究第2层帧头实例6、地址解析协议(ARP)实例7、中间设备用作终端设备实例8、管理设备配置
2016/5/12 10:29:55 810KB Cisco 模拟器 Packet tracer
1
模仿数据链路层的gobackn协议/*该协议是搭载ack的回退n步协议*/#include#include"protocol.h"#definemax_seq7#defineflag126#defineESC100#definewait_time2700 //发送计时器等待的时间#defineack_wait_time280staticintphl_ready=0;unsignedcharbuf[max_seq+1][270];unsignedcharack[8];//发送空的ack帧unsignedcharin_buf[600],last_buf[520];//接收时的缓冲区;去掉冗余之后的缓冲区,为防备因误码两帧合并为一帧而定义了很大一个数组intnbuffered=0;//发送的帧数intbuf_size[max_seq+1];//记下以发送各帧的帧长intnext_frame_to_send=0;intframe_in_phl=0;//用于成帧intframe_expected=0;intack_expected=0;intbetween(inta,intb,intc){ if(((a<=b)&&(b<c))||((c<a)&&(a<=b))||((b<c)&&(c<a))) return1; elsereturn0;}//判断帧尾,防止出现误判escescflag为数据的情况intend_flag(intin_len){ intcount=0; inti; if(in_len=0;i--)//记录flag前的esc数目 count++; returncount%2;//若flag前的esc为偶数,则为帧尾}//成帧函数--数据帧voidsend_frame(char*my_buf,intlen){ intn; buf[frame_in_phl][0]=(frame_expected+max_seq)%(max_seq+1); //ack buf[frame_in_phl][1]=frame_in_phl; //发送帧的帧号 for(n=0;n<len;n++) buf[frame_in_phl][n+2]=my_buf[n]; //将处理过的新帧赋值到缓冲区中 len=len+2; *(unsignedint*)(buf[frame_in_phl]+len)=crc32(buf[frame_in_phl],len); //在原始帧的基础上加检验和 buf_size[frame_in_phl]=len+4; //记录当前帧的长度,包括3个帧头,4个检验和 nbuffered=nbuffered+1; //缓冲区占用数加一 frame_in_phl=(frame_in_phl+1)%(max_seq+1);}//成帧函数--ack帧voidsend_ack() //ack帧的处理{ ack[0]=(frame_expected+max_seq)%(max_seq+1); ack[1]=max_seq+10; //ack帧的序号位,使ack[1]==frame_expected恒不成立 *(unsignedint*)(ack+2)=crc32(ack,2); //在原始帧的基础上加检验和}//主函数intmain(intargc,char**argv){intevent,arg,n,m,i,j,len=0,in_len=0; unsignedcharmy_buf[260]; intphl_wait=0;//在物理层中还没有被发送的帧protocol_init(argc,argv);enable_network_layer();for(;;){event=wait_for_event(&arg);switch(event){caseNETWORK_LAYER_READY:
2019/7/26 21:18:43 425KB go back n gobackn
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡