Exemple #1
0
        private void btnDownload_Click(object sender, EventArgs e)
        {
            try
            {
                //执行下载之前,先扫描是否存在打印机, 如果存在就下发,如果不存在就提示用户
                if (null == _pmjSerialPort)
                {
                    _pmjSerialPort = new PmjSerialPort(comboBoxPmj.Text, new PmjDataRecv());
                }
                var flagPrinter = _pmjSerialPort.HasPrinter(out string printerName);
                lbPmjStatus.Text = printerName;
                if (!flagPrinter)
                {
                    MessageBox.Show("没有扫描到打印机");
                    return;
                }
                //判断下发对象是否存在
                if (_pmjDataList.Count == 0)
                {
                    MessageBox.Show("请编辑下发对象");
                    return;
                }
                //获取File的列表
                var cmbData = cmbFileList.SelectedItem as CmbDataItem;

                //下发下载的指令
                var commandDownload = CommandFactory.GetDownloadCommand((byte)cmbData.Value);
                var result          = _pmjSerialPort.SendCommand(commandDownload, out DataResult dataResult);

                if (!result)
                {
                    MessageBox.Show("下发下载文件的命令执行失败");
                    return;
                }
                //
                foreach (var item in _pmjDataList)
                {
                    //下发文本
                    if (item.DataType == EnumPmjData.文本)
                    {
                        var label        = item.Control as Label;
                        var settingPanel = (item.DataSource as TextSettingParameter).UserControl as TextSetting;

                        var commandText   = CommandFactory.GetTextCommand((ushort)(label.Left / 2), (ushort)(label.Top / 2), Encoding.Default.GetBytes(label.Text), (ushort)settingPanel.GetSelectFont().Value);
                        var resultForSend = _pmjSerialPort.SendCommand(commandText, out DataResult resultF);
                        if (!resultForSend)
                        {
                            MessageBox.Show("文本命令下发失败");
                            break;
                        }
                    }
                    //下发序列号
                    if (item.DataType == EnumPmjData.序号)
                    {
                        var lable        = item.Control as Label;
                        var settingPanel =
                            (item.DataSource as SerialNumberParameter).UserControl as SerialNumberSetting;
                        var timeCommand = CommandFactory.GetSerialNumberCommand((ushort)lable.Text.Length,
                                                                                (ushort)settingPanel.GetFontValue(), (ushort)(lable.Left / 2), (ushort)(lable.Top / 2),
                                                                                (ushort)settingPanel.GetIntervalValue(), (uint)settingPanel.GetInitValue());
                        var resultForSend = _pmjSerialPort.SendCommand(timeCommand, out DataResult resultF);
                        if (!resultForSend)
                        {
                            MessageBox.Show("序列号命令下发失败");
                            break;
                        }
                    }
                    //下发设置的时间
                    if (item.DataType == EnumPmjData.时间)
                    {
                        var label        = item.Control as Label;
                        var settingPanel = (item.DataSource as TimeSettingParameter).UserControl as TimeSetting;
                        var format       = settingPanel.GetTimeFormat();
                        var fontSize     = settingPanel.GetFongValue();
                        //获取时间的偏移量
                        var timeOffset    = settingPanel.GetTimeOffSet();
                        var commandTime   = CommandFactory.GetTimeCommand(format, (ushort)fontSize, (ushort)(label.Left / 2), (ushort)(label.Top / 2), timeOffset);
                        var resultForSend = _pmjSerialPort.SendCommand(commandTime, out DataResult resultF);
                        if (!resultForSend)
                        {
                            MessageBox.Show("时间命令下发失败");
                            break;
                        }
                    }
                    //图片
                    if (item.DataType == EnumPmjData.图片 || item.DataType == EnumPmjData.二维码 || item.DataType == EnumPmjData.条码)
                    {
                        var control = (item.Control as PictureBox);
                        var bitmap  = control.Image as Bitmap;
                        Console.WriteLine($"图片大小 width:{bitmap.Width} height:{bitmap.Height}");
                        var flagImage = _pmjSerialPort.WriteImageBuffer(bitmap, control.Left / 2, control.Top / 2);
                        if (!flagImage)
                        {
                            MessageBox.Show("图片命令下发失败");
                            break;
                        }
                    }
                }
                //结束下载,首先获取x的最大的终点
                var xEnd    = GetEndX();
                var command = CommandFactory.GetFinishDownloadCommand(0, (ushort)xEnd);
                var flag    = _pmjSerialPort.SendCommand(command, out DataResult p);
                if (!flag)
                {
                    MessageBox.Show("结束下载命令下发失败");
                    return;
                }
                MessageBox.Show("下载文件成功");
                return;
            }catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #2
0
        /// <summary>
        /// 打印文件,如果收到数据就代表打印完成
        /// </summary>
        public DataResult Print()
        {
            var command = CommandFactory.GetPrintOnceCommand();

            return(WriteForResult(command, 2000));
        }