byNumGetDataLength($num); $header = [ $data_length, $this->getSoftwareVersion(), $cmd, $num_code, '00', '00', '00' ]; $data = $this->arr2str($header, $data); $data .= self::crc16(explode(' ', $data)); return $this->format($this->start . $data); } /** * 获取数据包的长度 * @param $num * @return array * User: Mead */ public function byNumGetDataLength($num) { $length = dechex($num); return str_pad($length, 4, '0', STR_PAD_LEFT); } /** * 软件版本号 * @return string * User: Mead */ public function getSoftwareVersion() { return '04'; } /** * 获取流水号 * @return int * User: Mead */ public function getPipelineNumber() { return '00'; } public function arr2str() { $args = func_get_args(); $arr = ''; foreach ($args as $arg) { if (is_array($arg)) { $arr .= implode('', $arg); } else { $arr .= str_replace(' ', '', $arg); } } return implode(' ', str_split($arr, 2)); } public function format($str) { return strtoupper(implode(' ', str_split(str_replace(' ', '', $str), 2))); } }