logo资料库

光谱仪串口通信协议V1.0.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
上海科源电子科技有限公司 光谱仪串口通信协议 V1.0 一、串口通信设定 波特率: 115200bps 校验位:None 数据位: 8 停止位:1 二、通信方式 通信采用主从方式,光谱仪采用从机方式,光谱仪响应每个 PC 机命令 三、通信命令 命令格式,目前有四条: K,F,R,G 1)K=n 积分时间:T=(3694*4*2^K)/F ,单位为毫秒/1000 (n=0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f) 积分时间 默认为 0 长度 3 字节 (n=1,2,4) 光谱仪基本工作频率 默认为 1 2)F=n 3)R 读取光谱仪一帧数据 4)G=n (n=0,1,2,3,4,5,6,7) PC 接收从(n*512*2~ (n+1)*512*2-1)的数据 长度 3 字节 长度 3 字节 长度 1 字节 K 命令: K = n ,以 ASCII 字符表示 byte 1 , byte 2 byte 3 以 ASCII 字符表示 以 ASCII 字符表示 n 取值范围为 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f F 命令: F = n R 命令: R ASCII 字符表示 G 命令: G = n byte 1 byte 2 byte 3 byte 1 byte 1 byte 2 byte 3 以 ASCII 字符表示 以 ASCII 字符表示 n 取值范围为 1,2,4,以 ASCII 字符表 示 以 ASCII 字符表示 以 ASCII 字符表示 n 取值范围为 0,1,2,3,4,5,6,7,以 ASCII 1 / 5
上海科源电子科技有限公司 字符表示 因为发送 G 命令后,光谱仪一次传送上来的数据量很大,为保证数据正确性,对所有上传 的数据进行 CRC 校验,并在数据最后添加 CRC 值,低位在前,高位在后。 四、通信举例 首先,发送 K 命令和 F 命令设定光谱仪的积分时间和工作频率,设定成功分别回复”K set OK”、”F set OK”,注:空格也以 ASCII 码表示。 其次,发送 R 命令指示光谱仪开始读取数据,读取成功回复”Read OK” 等待 T 时间后,发送 G 命令接收数据,接收到的数据为一组“能量值”,每个 byte 表示一个 能量值,例如收到数据{851,845,848,849,857,853,875,CRC_L, CRC_H}表示像素 从 0~6 的能量值,能量值以 16 进制表示。 像素和波长的对应关系需要进行标定,以下是示例公式: 波长 = -1.26208*(像素^2)*(10^-5) + 0.18491*像素 + 260.54888 光谱仪出厂时会进行标定,并提供波长与像素的对应公式系数,“能量值”不是标准的能量 单位,而是光谱仪采集到的电压值,在某一波长上与标准能量之间存在线性比例关系。 五、CRC 计算公式: unsigned short Modbus_CRC_Maker(unsigned short *pushMsg,unsigned short usDataLen) { unsigned char uchCRCHi = 0xFF ; /* 初始化高字节*/ unsigned char uchCRCLo = 0xFF ; /* 初始化低字节*/ unsigned char uIndex ; /*把 CRC 表*/ uchCRCHi=0xff; uchCRCLo=0xff; while (usDataLen--) /*通过数据缓冲器*/ { uIndex = uchCRCHi ^ *pushMsg++ ; /*计算 CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ; uchCRCLo = auchCRCLo[uIndex] ; } return (uchCRCHi << 8 | uchCRCLo) ; } unsigned char Modbus_CRC_Check(unsigned short *pushMsg,unsigned short usDataLen) { 2 / 5
上海科源电子科技有限公司 char uIndex ; /*把 CRC 表*/ unsigned char uchCRCHi = 0xFF ; /* 初始化高字节*/ unsigned char uchCRCLo = 0xFF ; /* 初始化低字节*/ unsigned char Frame_CRCL,Frame_CRCH; unsigned uchCRCHi=0xff; uchCRCLo=0xff; while ((usDataLen-2)!=0) /*通过数据缓冲器*/ { uIndex = uchCRCHi ^ *pushMsg++ ; /*计算 CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ; uchCRCLo = auchCRCLo[uIndex] ; usDataLen--; } Frame_CRCL=*pushMsg++; Frame_CRCH=*pushMsg++; if((Frame_CRCL==uchCRCLo)&(Frame_CRCH==uchCRCHi)) { return (0xff) ; //true } else { } } return(0x00); //false /* CRC 高位字节值表*/ unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 3 / 5
上海科源电子科技有限公司 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; /* CRC 低位字节值表*/ unsigned char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 4 / 5
上海科源电子科技有限公司 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 } ; 5 / 5
分享到:
收藏