FPGA.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. #include "stdafx.h"
  2. #include "FPGA.h"
  3. bool ProcessImageObject(RawPacketObject *pObj, IMAGE &Img)
  4. {
  5. for (size_t i = 0; i < pObj->sizeOfObject(); i++)
  6. {
  7. DIOSKEYTYPE key = (*pObj)[i].GetKey();
  8. switch (key)
  9. {
  10. case g_KEY_IMAGE_WIDTH:
  11. Img.Width = (*pObj)[i];
  12. break;
  13. case g_KEY_IMAGE_HEIGHT:
  14. Img.Height = (*pObj)[i];
  15. break;
  16. case g_KEY_IMAGE_BIT:
  17. Img.Bit = (*pObj)[i];
  18. break;
  19. case g_KEY_IMAGE_DEADLINE_TOP:
  20. Img.TopOffset = (*pObj)[i];
  21. break;
  22. case g_KEY_IMAGE_DEADLINE_LEFT:
  23. Img.LeftOffset = (*pObj)[i];
  24. break;
  25. case g_KEY_IMAGE_DEADLINE_RIGHT:
  26. Img.RightOffset = (*pObj)[i];
  27. break;
  28. case g_KEY_IMAGE_DEADLINE_BOTTOM:
  29. Img.BottomOffset = (*pObj)[i];
  30. break;
  31. case g_KEY_IMAGE_TAG:
  32. Img.ImageTag = (*pObj)[i];
  33. break;
  34. case g_KEY_IMAGE_INDEX:
  35. Img.ImageIndex = (*pObj)[i];
  36. break;
  37. case g_KEY_IMAGE_YEAR:
  38. Img.Year = (*pObj)[i];
  39. break;
  40. case g_KEY_IMAGE_MONTH:
  41. Img.Month = (*pObj)[i];
  42. break;
  43. case g_KEY_IMAGE_DAY:
  44. Img.Day = (*pObj)[i];
  45. break;
  46. case g_KEY_IMAGE_HOUR:
  47. Img.Hour = (*pObj)[i];
  48. break;
  49. case g_KEY_IMAGE_MINUTE:
  50. Img.Minute = (*pObj)[i];
  51. break;
  52. case g_KEY_IMAGE_SEC:
  53. Img.Second = (*pObj)[i];
  54. break;
  55. case g_KEY_IMAGE_MILLSEC:
  56. Img.MillonSecond = (*pObj)[i];
  57. break;
  58. case g_KEY_IMAGE_DATA:
  59. Img.pData = (char*)((const char*)(*pObj)[i]);
  60. break;
  61. default:
  62. break;
  63. }
  64. }
  65. return true;
  66. }
  67. void EncodeCommand(DiosPacket &OutputCommand, BYTE PhyIndex, BYTE LogicIndex, int Target, BYTE Command)
  68. {
  69. char temp = PhyIndex;
  70. OutputCommand.SetPhyDevIdx(temp);
  71. temp = LogicIndex;
  72. OutputCommand.SetLogicDevIdx(temp);
  73. unsigned int tag = Target;
  74. OutputCommand.SetTargetDirection(tag);
  75. OutputCommand.SetCommand(Command);
  76. OutputCommand.SetRetcode(0);
  77. }
  78. void EncodeParameters(DiosPacket &OutputCommand, const char *pData, size_t dataLen)
  79. {
  80. OutputCommand.AddData(pData, dataLen);
  81. }
  82. int WindowNofify(const char * InCommand, int len)
  83. {
  84. WORD windowvalue;
  85. memcpy(&windowvalue, &InCommand[2], sizeof(windowvalue));
  86. printf("****Receive FPGA Window is %d ******\n", windowvalue);
  87. return 0;
  88. }
  89. int WindowStateNotify(const char * InCommand, int len)
  90. {
  91. char windowstate;
  92. memcpy(&windowstate, &InCommand[2], sizeof(windowstate));
  93. printf("*******Receive FPGA WINDOW STATE is %s *******\n", windowstate == 0 ? "stop" : "start");
  94. return 0;
  95. }
  96. int AcqStateNotify(const char * InCommand, int len)
  97. {
  98. char acqvalue;
  99. memcpy(&acqvalue, &InCommand[2], sizeof(acqvalue));
  100. printf("******Receive FPGA ACQ STATE is %s *********\n", acqvalue == 0 ? "stop" : "start");
  101. if (acqvalue == 0)
  102. {
  103. printf("===========Acquire End==============\n");
  104. }
  105. return 0;
  106. }
  107. //
  108. //int ImageReadyNofify(const char * InCommand, int len)
  109. //{
  110. // WORD acqvalue;
  111. // unsigned short int type = 0;
  112. // bool bProcEnd = true;
  113. // unsigned int Pointer = 0;
  114. // unsigned short int sValue = 0;
  115. // unsigned int iValue = 0;
  116. // double dValue = 0;
  117. // double dImageTag = 0;
  118. // double dImageIndex = 0;
  119. //
  120. // memcpy(&acqvalue, &InCommand[2], sizeof(acqvalue));
  121. // printf("Receive FPGA Image Ready \n");
  122. //
  123. // while(bProcEnd)
  124. // {
  125. // memcpy(&type,&InCommand[Pointer],sizeof(short int));
  126. // switch (type)
  127. // {
  128. // case 0xA00C:
  129. // Pointer += 2;
  130. // memcpy(&iValue,&InCommand[Pointer],sizeof(iValue));
  131. // printf("image packet length is %d",iValue);
  132. // Pointer += 4;
  133. // break;
  134. // case 0x100D:
  135. // Pointer += 2;
  136. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  137. // printf("Width: %d\t",sValue);
  138. // Pointer += 2;
  139. // break;
  140. // case 0x100E:
  141. // Pointer += 2;
  142. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  143. // printf("Hight: %d\t",sValue);
  144. // Pointer += 2;
  145. // break;
  146. // case 0x100F:
  147. // Pointer += 2;
  148. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  149. // printf("Bit: %d\t\n",sValue);
  150. // Pointer += 2;
  151. // break;
  152. // case 0x1010:
  153. // Pointer += 2;
  154. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  155. // printf("TopOffset: %d\t",sValue);
  156. // Pointer += 2;
  157. // break;
  158. // case 0x1011:
  159. // Pointer += 2;
  160. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  161. // printf("LeftOffset: %d\t",sValue);
  162. // Pointer += 2;
  163. // break;
  164. // case 0x1012:
  165. // Pointer += 2;
  166. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  167. // printf("RightOffset: %d\t",sValue);
  168. // Pointer += 2;
  169. // break;
  170. // case 0x1013:
  171. // Pointer += 2;
  172. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  173. // printf("BottomOffset: %d\t\n",sValue);
  174. // Pointer += 2;
  175. // break;
  176. // case 0x3014:
  177. // Pointer += 2;
  178. // memcpy(&dValue,&InCommand[Pointer],sizeof(dValue));
  179. // printf("ImageTag: %ld\t",dValue);
  180. // dImageTag = dValue;
  181. // Pointer += 8;
  182. // break;
  183. // case 0x3015:
  184. // Pointer += 2;
  185. // memcpy(&dValue,&InCommand[Pointer],sizeof(dValue));
  186. // printf("ImageIndex: %ld\t\n",dValue);
  187. // dImageIndex = dValue;
  188. // Pointer += 8;
  189. // break;
  190. // case 0x1016:
  191. // Pointer += 2;
  192. // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue));
  193. // printf("Year: %d\t",sValue);
  194. // Pointer += 2;
  195. // break;
  196. // case 0x0017:
  197. // Pointer += 2;
  198. // printf("Month: %d\t",InCommand[Pointer]);
  199. // Pointer ++;
  200. // break;
  201. // case 0x0018:
  202. // Pointer += 2;
  203. // printf("Day: %d\t",InCommand[Pointer]);
  204. // Pointer ++;
  205. // break;
  206. // case 0x0019:
  207. // Pointer += 2;
  208. // printf("hour: %d\t",InCommand[Pointer]);
  209. // Pointer ++;
  210. // break;
  211. // case 0x001A:
  212. // Pointer += 2;
  213. // printf("Minute: %d\t",InCommand[Pointer]);
  214. // Pointer ++;
  215. // break;
  216. // case 0x001B:
  217. // Pointer += 2;
  218. // printf("Second: %d\t",InCommand[Pointer]);
  219. // Pointer ++;
  220. // break;
  221. // case 0x101C:
  222. // Pointer += 2;
  223. // memcpy(&sValue, &InCommand[Pointer], sizeof(sValue));
  224. // printf("ms: %d\t\n", sValue);
  225. // Pointer += 2;
  226. // break;
  227. // case 0xA01D:
  228. // Pointer += 2;
  229. // memcpy(&iValue,&InCommand[Pointer],sizeof(iValue));
  230. // printf("\n save image data length is %d\n",iValue);
  231. //
  232. // bProcEnd = false;
  233. // break;
  234. //
  235. // default:
  236. // printf("\n get wrong type %d ,just return.\n",type);
  237. // bProcEnd = false;
  238. //
  239. // }
  240. // }
  241. // CFPGACommunication g_obFPGAComm;
  242. // g_obFPGAComm.FetchImage(dImageTag,dImageIndex);
  243. //
  244. // return 0;
  245. //}
  246. //