/// <summary> /// 初始化墨水曲线数据包信息数据 /// </summary> private void InitializeData() { #region 数据解析格式 /* * 数据解析格式,按照如下伪代码 * typedef struct INK_NAME_INFO_tag{ * INT8U num;//墨水类型个数 * INT8U rev[3];//4字节对齐 * INT8U version[12];//数据包版本 * INT8U name1[8];//墨水类型1名称 * INT8U name2[8];//墨水类型2名称 * … * INT8U namen[8];//墨水类型n名称 * } * * req = 0x68; * index = 0x02 * 收发,数据长度1,当前选中组号 * index = 0x03 * 发,数据长度,包信息 * */ #endregion byte[] buffer = new byte[64]; uint bufferSize = (uint)buffer.Length; int ret = CoreInterface.GetEpsonEP0Cmd(0x68, buffer, ref bufferSize, 0, 0x03); if (ret == 0) { MessageBox.Show(string.Format("GetEpsonEP0Cmd Error!cmd {0},index {1}", 0x68, 0x03)); } else { byte[] bufferData = buffer.Skip(2).ToArray(); if (bufferData.Length >= 16) { InkNum = bufferData[0]; InkDataTagVersion = Encoding.ASCII.GetString(bufferData.Skip(4).Take(12).ToArray()); } if (bufferData.Length >= (16 + 8 * InkNum)) { var inkNamesData = bufferData.Skip(16).ToArray(); for (int i = 0; i < InkNum; i++) { InkNames.Add(Encoding.ASCII.GetString(inkNamesData, 8 * i, 8)); } } } ; if (!PubFunc.GetCurInkType(ref selectedInkType)) { MessageBox.Show(string.Format("GetEpsonEP0Cmd Error!cmd {0},index {1}", 0x68, 0x02)); } UpdateUI(); }