我构建了一个控制台应用程序,该应用程序使用扫描仪扫描QR码并将值作为字符串输出到控制台应用程序中。
我有一个单独的Web应用程序,每次用户扫描QR码时,该应用程序都会将此控制台输出用作文本框输入。我不知道如何在这两个应用程序之间建立连接,因为它们分别运行。
public static void InitializeSettings() {
SerialPortManager _spManager = new SerialPortManager();
SerialSettings mySerialSettings = _spManager.CurrentSerialSettings;
_spManager.NewSerialDataRecieved += new EventHandler<SerialDataEventArgs>(_spManager_NewSerialDataRecieved);
// use to initialize serial port settings
mySerialSettings.PortName = "";
mySerialSettings.BaudRate = ;
mySerialSettings.DataBits = ;
mySerialSettings.Parity = System.IO.Ports.Parity.None;
mySerialSettings.StopBits = System.IO.Ports.StopBits.One;
_spManager.CurrentSerialSettings = mySerialSettings;
// Start thread to start listening
Thread listenThread = new Thread( _spManager.StartListening);
listenThread.SetApartmentState(ApartmentState.STA);
listenThread.IsBackground = false;
listenThread.Start();
Console.ReadKey();
}
static void _spManager_NewSerialDataRecieved(object sender, SerialDataEventArgs e)
{
string data = Encoding.Default.GetString(e.Data);
Console.WriteLine(data);
Console.ReadKey();
}
以上代码在控制台中打印QR值。关于此的任何想法都会更有帮助。
谢谢
答案 0 :(得分:0)
理想情况下,最好将条形码扫描仪设置为系统中的常规键盘;这样一来,您就可以专注于网页中的文本框,它应该会收到扫描的代码,通常后跟enter
键。
如果这不可能,并且假设您可以修改此Web应用程序并且只能通过串行端口与条形码扫描器进行交互(如我在提供的代码中所看到的),则可以从您的HTTP服务器中公开控制台应用程序,然后您的Web应用程序可以使用Web套接字或通过Ajax的拉策略连接到该应用程序,并监听可用于填充文本框并执行任何其他所需操作的扫描代码;您还需要在此http服务器上设置CORS,以允许从您的Web应用程序域进行访问。
如果该http服务器创意对您来说听起来不错,请看一下SignalR,它可以帮助您实现这一目标; nuget包的名称为:Microsoft.AspNet.SignalR.SelfHost
。
一些文档可以在这里找到:https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host