Example #1
0
        /// <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();
        }