15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

归档标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

月度归档 10月 28, 2018

总线通讯协议之CRC16校验算法(C语言)

随着工业化生产的加快,各种机器协作作业已经成为大势所趋,然而通讯总线成为建立合作之间的桥梁,为保证数据的安全可靠到达对方的主控设备,于是开发人员对数据进行校准,多次重发机制。

CRC是其中一种,CRC16用的最多,并且分为多种:CRC-16(Modbus)、CRC-16(Sick)、CRC-16(XModem)、CRC-16(0xffff)、CRC-16(1D0F)、CRC-16(Kermit)。

C语言CRC-16(Modbus):

unsigned short ModBusCRC (unsigned char *ptr,unsigned char size)
{
	unsigned short a,b,tmp,CRC16,V;
	CRC16=0xffff; //CRC 寄存器初始值
	for (a=0;a<size;a++) //N 个字节
	{
		CRC16=*ptr^CRC16;
		for (b=0;b<8;b++) //8 位数据
		{
			tmp=CRC16 & 0x0001;
			CRC16 =CRC16 >>1; // 右移一位
			if (tmp)
			CRC16=CRC16 ^ 0xa001; // 异或多项式
		}
		*ptr++;
	}
	V = ((CRC16 & 0x00FF) << 8) | ((CRC16 & 0xFF00) >> 8) ;// 高低字节转换
	return V;
}

 

C语言CRC-16(XModem):

unsigned int period_crc16(unsigned char *dat, unsigned int count)
{
	const unsigned int ccitt_table[] = {
	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
	0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
	0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
	0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
	0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
	0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
	0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
	0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
	0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
	0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
	0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
	0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
	0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
	0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
	0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
	0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
	0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
	0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
	0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
	0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
	0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
	0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
	0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
	0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
	0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
	0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
	0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
	0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
	0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
	0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
	0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
	0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
	};
	unsigned int crc = 0;
	unsigned int crctemp;
	unsigned int i = 0;
	while (count--)
	{
		crctemp = crc >> 8;
		crc = (crc << 8) & 0xFFFF;
		crc = (ccitt_table[crctemp ^ dat[i]] ^ crc) & 0xFFFF;
		i += 1;
	}
	return crc;
}

 

测试VS2010 demo:crc16_test

MODBUS-CRC16的原理及C语言的实现:MODBUS-CRC16的原理及C语言的实现

测试工具:CRC_Calc+v0.1.exe

Python安装scrapy error: Microsoft Visual C++ 14.0 is required

3.6\twisted\words\im
copying src\twisted\words\xish\xpathparser.g -> build\lib.win-amd64-3.6\twis
ted\words\xish
running build_ext
building ‘twisted.test.raiser’ extension
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual
C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools


 

按照提示网址打开一直提示400,算了,还是自己官网找下https://www.microsoft.com/zh-CN/download/details.aspx?id=48145

解决树莓派IOError: [Errno Invalid sample rate] -9997 采样率16K错误

树莓派在基于pyaudio录音的时候会提示如上错误,这主要是使用的树莓派声卡不支持当前的采用率,没关系,其实在alsa架构下我们可以通过声卡的插件实现转换。在树莓派下家目录创建一个声卡隐藏配置文件 .asoundrc。特别说明,不要在你的pyaudio里面设置打开声卡的编号因为下面的配置已经配置了。

1.安装

sudo apt-get install pulseaudio
2.在家目录创建隐藏文件 .asoundrc

pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}

———————
作者:张飞online
来源:CSDN
原文:https://blog.csdn.net/u013372900/article/details/80296125?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

RT5350 openwrt 修改默认IP地址

1、进入openwrt目录

命令:cd openwrt

2、打开配置文件

命令:vim openwrt/package/base-files/files/bin/config_generate

找到192.168.1.1修改为你想要的和你的路由器不冲突的ip。个人爱好改成192.168.10.1

保存退出

3、重新编译生成bin文件,下载到开发板。

4、重启

命令:ifconfig

查看ip配置修改情况。

 

 

物联网智能网关485转232转以太网TCPIPUDP多协议定制数据采集转换

物联网的发展带动各大产业全面升级,许多低端产品也慢慢进入物联网时代,由旧设备到新设备过度升级是个很痛心的事情,涉及到升级成本和升级难度等多方面环节。我们正在解决同样的事情,我们推出了我们的方案。主要解决数据安全、协议不匹配、对网络协议不熟悉等诸多问题。

电气特性
接口定义  兼容RS232和RS485标准
电气接口  RS232 DB9母座,RS485端子接线柱
工作模式  异步半双工差分传输
波特率  300bps-115200bps
传输介质  双绞线
外形尺寸  80*50*1.6
电源输入  DC9V-16V
功耗  <0.15W
使用环境  -10℃-60℃,相对湿度10%-90%(无凝结)

1、485转232透传

数据不经过处理,直接把232接口和485接口互转,转换方向可随时调节,波特率可调。

 

2、485转232定制协议

对数据进行打包处理,根据客户自定义协议或者标准协议传输,转换方向可随时调节,波特率可调。

 

3、485转232数据加密

对数据进行打包处理,二次处理,实现重新编码,解码,加密方式采用AES加密,base64暗码传输,通讯协议可根据客户需求定义, 转换方向可随时调节,波特率可调。

 

4、 485转232防火墙

对数据进行打包处理,二次处理,通讯协议采用多校验、深度加密算法TY-V1.0协议,加入智能防火墙功能,绕开无名数据,抵制DDS洪流,智能泄流,反向定位。