版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

203 строки
7.0 KiB

  1. using MvCamCtrl.NET;
  2. using Newtonsoft.Json;
  3. using ProductionControl.Device;
  4. using ProductionControl.UI;
  5. using ProductionControl.Utils;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Linq;
  12. using System.Runtime.InteropServices;
  13. using System.Text;
  14. using System.Threading;
  15. using System.Threading.Tasks;
  16. using System.Windows.Forms;
  17. namespace ProductionControl
  18. {
  19. public partial class Form2 : Form
  20. {
  21. enum Motor { X = 'X', Y = 'Y' };
  22. [DllImport("PomeasDualDll-Z.dll", EntryPoint= "?open@CDComm@@QAEHH@Z")]
  23. private static extern bool open(int port);
  24. [DllImport("PomeasDualDll-Z.dll")]
  25. private static extern void close();
  26. [DllImport("PomeasDualDll-Z.dll")]
  27. private static extern void MoveHome(Motor m);
  28. //运动到指定位置 *
  29. [DllImport("PomeasDualDll-Z.dll")]
  30. private static extern void MoveGoto(Motor m,long dest);
  31. //获取总长度
  32. [DllImport("PomeasDualDll-Z.dll")]
  33. private static extern long MoveMaxLength(Motor m);
  34. //获取当前位置
  35. [DllImport("PomeasDualDll-Z.dll")]
  36. private static extern long MovePos(Motor m);
  37. [DllImport("PMSOpticalDll.dll", CharSet = CharSet.Ansi, EntryPoint = "PMSOptical_OpenComm", CallingConvention = CallingConvention.Cdecl)]
  38. public static extern IntPtr PMSOptical_OpenComm(string comname, int nBaud);
  39. SSerialPort sSerialPort;// = new SSerialPort("COM4", 2400,1);
  40. HeightDev dev = new HeightDev();
  41. public Form2()
  42. {
  43. InitializeComponent();
  44. }
  45. private void Form2_Load(object sender, EventArgs e)
  46. {
  47. return;
  48. string Scanner_GENTL_CTI = "ScannerRuntime\\Win64_x64\\MvFGProducerCXP(MV-GX1004).cti";
  49. MyCamera.MV_GENTL_IF_INFO_LIST m_stIFInfoList = new MyCamera.MV_GENTL_IF_INFO_LIST();
  50. int nRet = MyCamera.MV_CC_EnumInterfacesByGenTL_NET(ref m_stIFInfoList, Scanner_GENTL_CTI);
  51. if (0 != nRet)
  52. {
  53. return;
  54. }
  55. //this.uiScannerDev1.init(Device.ScannerDev.ScannerType.GENTL);
  56. //uiScannerDev1.log += new Action<int, string>((level, info) =>
  57. //{
  58. //});
  59. //dev.start("192.168.3.35", 64000);
  60. //var cc = PMSOptical_OpenComm("COM2", 9600);
  61. return;
  62. //byte[] getMaxPos = new byte[] { 0x58, 0x4D, 0x0D };
  63. //sSerialPort.send(getMaxPos, 0, getMaxPos.Length);
  64. //Thread.Sleep(20);
  65. //byte[] recv = sSerialPort.getMessage(1000);//9 byte
  66. //if (recv == null) recv = new byte[0];
  67. //this.label1.Text = $"{recv.Length} | ";
  68. //if (recv.Length > 0)
  69. //{
  70. // byte[] maxPos = subBuff(recv, 2, 5);//5 byte
  71. // for(int i = 0;i<maxPos.Length;i++)
  72. // this.label1.Text += maxPos[i].ToString("X")+" ";
  73. //}
  74. }
  75. private void button1_Click(object sender, EventArgs e)
  76. {
  77. return;
  78. //testArr.testArr1 += 1;
  79. //this.propertyGrid1.Refresh();
  80. //str = JsonConvert.SerializeObject(testArr);
  81. MessageBox.Show(string.Join("|", SSerialPort.getPortNames()));
  82. }
  83. private void button2_Click(object sender, EventArgs e)
  84. {
  85. this.Text = dev.getHeight().ToString();
  86. return;
  87. //int x = 100;
  88. //string hex = x.ToString("X").PadLeft(6, ' ');
  89. //byte[] gotoX = new byte[9];
  90. //gotoX[0] = 0x58;
  91. //gotoX[1] = 0x47;
  92. //for(int i = 0;i<hex.Length;i++)
  93. // gotoX[i+2] = (byte)(hex[i]);
  94. //gotoX[8] = 0x0D;
  95. //sSerialPort.send(gotoX, 0, gotoX.Length);
  96. }
  97. private void button3_Click(object sender, EventArgs e)
  98. {
  99. //byte[] getState = new byte[] { 0x58, 0x5A, 0x0D };
  100. //sSerialPort.send(getState, 0, getState.Length);
  101. //Thread.Sleep(20);
  102. //byte[] recv=sSerialPort.getMessage(1000);
  103. //if (recv == null) recv = new byte[0];
  104. //this.Text = $"{recv.Length} | ";
  105. //if (recv.Length > 0)
  106. // this.Text += recv[0].ToString("X");
  107. }
  108. private void button4_Click(object sender, EventArgs e)
  109. {
  110. //byte[] goHome = new byte[] { 0x58, 0x48, 0x0D };
  111. //sSerialPort.send(goHome, 0, goHome.Length);
  112. //var buff = sSerialPort.getMessage(-1);
  113. //if (buff == null)
  114. // return;
  115. //if (buff.Length % 11 != 0)
  116. // throw new Exception("数据错误!");
  117. //if (buff.Length > 11)
  118. // buff = subBuff(buff, buff.Length - 11, 11);
  119. //if (buff[0] != 0x10)
  120. // throw new Exception("数据0错误!");
  121. //int add = 0;
  122. //for (int i = 1; i < 10; i++)
  123. // add += (int)buff[i];
  124. //if (add != buff[10])
  125. // throw new Exception("数据ADD错误!");
  126. //string unit = buff[3] == 0x10 ? "N/cm" : "Kgf/cm";
  127. //string data = "";
  128. //int zf = 1;
  129. //for (int i = 4; i <= 8; i++)
  130. //{
  131. // if (buff[i] == 0x0a) continue;
  132. // if (buff[i] == 0x0b) zf = -1;
  133. // if (buff[i] <0x0a)
  134. // data += (int)buff[i];
  135. //}
  136. //double lfNum = Convert.ToSingle(data) * zf;
  137. //if (buff[9] > 0) lfNum /= Math.Pow(10, buff[9]);
  138. //this.Text = lfNum + " " + unit;
  139. }
  140. private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  141. {
  142. dev.stop();
  143. //sSerialPort.close();
  144. }
  145. private void button5_Click(object sender, EventArgs e)
  146. {
  147. byte[] getPos = new byte[] { 0x58, 0x4E, 0x0D };
  148. sSerialPort.send(getPos, 0, getPos.Length);
  149. Thread.Sleep(20);
  150. byte[] recv = sSerialPort.getMessage(1000);//9 byte
  151. if (recv == null) recv = new byte[0];
  152. this.label2.Text = $"{recv.Length} | ";
  153. if (recv.Length > 0)
  154. {
  155. byte[] maxPos = subBuff(recv, 2, 5);//5 byte
  156. for (int i = 0; i < maxPos.Length; i++)
  157. this.label2.Text += maxPos[i].ToString("X") + " ";
  158. }
  159. }
  160. private byte[] subBuff(byte[] buff,int start,int length)
  161. {
  162. byte[] res=new byte[length];
  163. for(int i=start;i<buff.Length && i<start+length;i++)
  164. res[i-start] = buff[i];
  165. return res;
  166. }
  167. private void timer1_Tick(object sender, EventArgs e)
  168. {
  169. //button4_Click(sender, e);
  170. }
  171. private void button6_Click(object sender, EventArgs e)
  172. {
  173. //label3.Text = dev.getDecimal().ToString();
  174. }
  175. private void button7_Click(object sender, EventArgs e)
  176. {
  177. dev.reset();
  178. }
  179. }
  180. }