using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO.Ports; using DGPosPay.Window; using System.Timers; using System.Windows.Forms; using Ini; namespace DGPosPay { public class DGPosPayClass { IniFile ini = new IniFile(); private SerialPort serialPort = new SerialPort(); public string DGPosPay(string inParams) { //System.Diagnostics.Debugger.Launch(); string errorCode = "-1"; string errorMessage = ""; string readData = ""; JObject jObject = new JObject(); try { JObject inParamsobj = JObject.Parse(inParams); var paramsobj = inParamsobj["result"][0]; string posData = paramsobj["posData"].ToString(); string remarks= paramsobj["remarks"].ToString(); string portName = ini.IniReadValue("Config", "portName"); using (serialPort) { serialPort.PortName = portName; // 设置串口名称 serialPort.Encoding = System.Text.Encoding.GetEncoding("GB2312"); serialPort.BaudRate = 9600; // 设置波特率 serialPort.Parity = Parity.None; // 设置奇偶校验 serialPort.DataBits = 8; // 设置数据位数 serialPort.StopBits = StopBits.One; // 设置停止位 serialPort.Handshake = Handshake.None; // 设置握手协议 //serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); // 接收到数据时的事件 if (!serialPort.IsOpen) { serialPort.Open(); } if (serialPort.IsOpen) { WaitWindow waitWindow = new WaitWindow(serialPort); waitWindow.label3data = remarks; serialPort.WriteLine(posData); // 写入数据 if (waitWindow.ShowDialog() == DialogResult.OK) { } else { } string outstring = waitWindow.outstring; return outstring; } else { errorCode = "-1"; errorMessage = "串口打开失败"; } } } catch (Exception ex2) { errorCode = "-1"; errorMessage = ex2.Message; } if (serialPort.IsOpen) { serialPort.Close(); } jObject.Add("errorCode", errorCode); jObject.Add("errorMessage", errorMessage); jObject.Add("posData", readData); return jObject.ToString(); } private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine("Data Received:"); Console.Write(indata); } } }