Scanner.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using ProjectBase.Data.Logs;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using ProjectBase.Util;
  10. using System.Threading;
  11. namespace SIMDP.Device
  12. {
  13. public class Scanner
  14. {
  15. #region 视觉相机扫码
  16. static byte[] Camera_CMD_Start = System.Text.Encoding.ASCII.GetBytes("LON" + "\r");
  17. static byte[] Camera_CMD_End = System.Text.Encoding.ASCII.GetBytes("LOFF" + "\r");
  18. static byte[] recvData = new byte[1024 * 1024];
  19. public static string CameraScanner(string Ip, int Port, int trytimes)
  20. {
  21. string res = "";
  22. for (int i = 0; i < trytimes; i++)
  23. {
  24. Thread.Sleep(1000);
  25. res = CameraScanner2(Ip, Port).Trim();
  26. if (SysEnvironment.CheckVINRule(res))
  27. break;
  28. }
  29. return res;
  30. }
  31. public static string CameraScanner2(string Ip, int Port)
  32. {
  33. Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  34. string str = "";
  35. try
  36. {
  37. IPEndPoint epServer = new IPEndPoint(IPAddress.Parse(Ip), Port);
  38. clientSocket.Blocking = true;
  39. clientSocket.Connect(epServer);
  40. int ret = clientSocket.Send(Camera_CMD_Start);//发送LON扫码
  41. clientSocket.ReceiveTimeout = 2000;
  42. while (ret > 0)
  43. {
  44. ret = clientSocket.Receive(recvData, recvData.Length, 0);
  45. if (ret > 0)
  46. {
  47. str += Encoding.ASCII.GetString(recvData, 0, ret);
  48. break;
  49. }
  50. }
  51. clientSocket.Close();
  52. return str;
  53. }
  54. catch (Exception ex)
  55. {
  56. try
  57. {
  58. clientSocket.Send(Camera_CMD_End);//发送LOFF停止
  59. }
  60. catch { }
  61. clientSocket.Close();
  62. LogHelper.log.Error("与扫码相机通信出现故障:", ex);
  63. return str;
  64. }
  65. finally
  66. {
  67. clientSocket?.Dispose();
  68. }
  69. }
  70. #endregion
  71. }
  72. }