Main.cs 120 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO.Ports;
  8. using System.Linq;
  9. using System.Runtime.InteropServices;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. //Add
  14. using System.Reflection;
  15. using Excel = Microsoft.Office.Interop.Excel;
  16. using static Jdas_Mbic.Bluecell_BootProtocol;
  17. using System.Threading;
  18. namespace Jdas_Mbic
  19. {
  20. public partial class JdasMbic : Form
  21. {
  22. const double Table_Dbm_DefaultValue = 0;//31.5;
  23. const int Table_DL_DefaultValue = 5;
  24. const int Table_UL_DefaultValue = -15;
  25. const int Table_Temp_DefaultValue = -10;
  26. Serial serial = new Serial(); // Uart Open
  27. enum DLUL_Category
  28. {
  29. DL_DET = 0,
  30. UL_DET
  31. };
  32. enum MBIC_TableNumber
  33. {
  34. DLI_P1_Level_Table_Number = 0x00,
  35. DLI_P2_Level_Table_Number = 0x01,
  36. DLI_P3_Level_Table_Number = 0x02,
  37. DLI_P4_Level_Table_Number = 0x03,
  38. ULO_P1_Level_Table_Number = 0x10,
  39. ULO_P2_Level_Table_Number = 0x11,
  40. ULO_P3_Level_Table_Number = 0x12,
  41. ULO_P4_Level_Table_Number = 0x13,
  42. DLI_P1_ATT_Temp_guarantee_Table_Number = 0x20,
  43. DLI_P2_ATT_Temp_guarantee_Table_Number = 0x21,
  44. DLI_P3_ATT_Temp_guarantee_Table_Number = 0x22,
  45. DLI_P4_ATT_Temp_guarantee_Table_Number = 0x23,
  46. ULO_P1_ATT_Temp_guarantee_Table_Number = 0x30,
  47. ULO_P2_ATT_Temp_guarantee_Table_Number = 0x31,
  48. ULO_P3_ATT_Temp_guarantee_Table_Number = 0x32,
  49. ULO_P4_ATT_Temp_guarantee_Table_Number = 0x33,
  50. DLI_P1_ATT_Accuracy_Table_Number = 0x40,
  51. DLI_P2_ATT_Accuracy_Table_Number = 0x41,
  52. DLI_P3_ATT_Accuracy_Table_Number = 0x42,
  53. DLI_P4_ATT_Accuracy_Table_Number = 0x43,
  54. ULO_P1_ATT_Accuracy_Table_Number = 0x50,
  55. ULO_P2_ATT_Accuracy_Table_Number = 0x51,
  56. ULO_P3_ATT_Accuracy_Table_Number = 0x52,
  57. ULO_P4_ATT_Accuracy_Table_Number = 0x53,
  58. }
  59. public JdasMbic()
  60. {
  61. InitializeComponent();
  62. }
  63. private void JdasMbic_Load(object sender, EventArgs e)
  64. {
  65. serial.Serial_Main_Form_Get(this);
  66. ATT_TableLayoutSetting();
  67. serial.Serial_Initialize(ref comboBox_Port);
  68. }
  69. private void ATT_TableLayoutSetting()
  70. {
  71. double TempDbmData = Table_Dbm_DefaultValue;
  72. string tempstr = "";
  73. for (int i = 0; i < 64; i++)
  74. {
  75. dataGridView_TableSetting.Rows.Add();
  76. tempstr = string.Format("{0:0.0}", TempDbmData);
  77. dataGridView_TableSetting[0, i].Value = Convert.ToString(tempstr) + " dBm"; ;
  78. dataGridView_TableSetting[1, i].Value = "0";
  79. TempDbmData = TempDbmData + 0.5;
  80. }
  81. foreach (DataGridViewRow row in this.dataGridView_TableSetting.Rows)
  82. {
  83. row.HeaderCell.Value = String.Format("{0}", row.Index + 1);
  84. }
  85. this.dataGridView_TableSetting.AutoResizeRowHeadersWidth(
  86. DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
  87. this.dataGridView_TableSetting.TopLeftHeaderCell.Value = "No.";
  88. dataGridView_TableSetting.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  89. dataGridView_TableSetting.ClearSelection();
  90. }
  91. private void DET_TableLayoutSetting(DLUL_Category cat)
  92. {
  93. string tempstr = "";
  94. DLUL_Category tempenum = cat;
  95. switch (tempenum) {
  96. case DLUL_Category.DL_DET:
  97. double Temp_DL_Data = Table_DL_DefaultValue;
  98. for (int i = 0; i < 31; i++)
  99. {
  100. dataGridView_TableSetting.Rows.Add();
  101. tempstr = string.Format("{0:0}", Temp_DL_Data);
  102. dataGridView_TableSetting[0, i].Value = Convert.ToString(tempstr) + " dBm";
  103. Temp_DL_Data = Temp_DL_Data - 1;
  104. dataGridView_TableSetting[1, i].Value = "0";
  105. }
  106. break;
  107. case DLUL_Category.UL_DET:
  108. double Temp_UL_Data = Table_UL_DefaultValue;
  109. for (int i = 0; i < 46; i++)
  110. {
  111. dataGridView_TableSetting.Rows.Add();
  112. tempstr = string.Format("{0:0}", Temp_UL_Data);
  113. dataGridView_TableSetting[0, i].Value = Convert.ToString(tempstr) + " dBm";
  114. Temp_UL_Data = Temp_UL_Data - 1;
  115. dataGridView_TableSetting[1, i].Value = "0";
  116. }
  117. break;
  118. }
  119. foreach (DataGridViewRow row in this.dataGridView_TableSetting.Rows)
  120. {
  121. row.HeaderCell.Value = String.Format("{0}", row.Index + 1);
  122. }
  123. this.dataGridView_TableSetting.AutoResizeRowHeadersWidth(
  124. DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
  125. this.dataGridView_TableSetting.TopLeftHeaderCell.Value = "No.";
  126. dataGridView_TableSetting.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  127. dataGridView_TableSetting.ClearSelection();
  128. }
  129. private void Temp_TableLayoutSetting()
  130. {
  131. string tempstr = "";
  132. double Temp_Data = Table_Temp_DefaultValue;
  133. for (int i = 0; i < 10; i++)
  134. {
  135. dataGridView_TableSetting.Rows.Add();
  136. tempstr = string.Format("{0:0}", Temp_Data);
  137. dataGridView_TableSetting[0, i].Value = Convert.ToString(tempstr) + " ℃";
  138. Temp_Data = Temp_Data - 5;
  139. dataGridView_TableSetting[1, i].Value = "0";
  140. }
  141. foreach (DataGridViewRow row in this.dataGridView_TableSetting.Rows)
  142. {
  143. row.HeaderCell.Value = String.Format("{0}", row.Index + 1);
  144. }
  145. this.dataGridView_TableSetting.AutoResizeRowHeadersWidth(
  146. DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
  147. this.dataGridView_TableSetting.TopLeftHeaderCell.Value = "No.";
  148. dataGridView_TableSetting.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  149. dataGridView_TableSetting.ClearSelection();
  150. }
  151. private void dataGridView_TableSetting_CellClick(object sender, DataGridViewCellEventArgs e)
  152. {
  153. }
  154. /*
  155. *
  156. * TABLE Setting Area
  157. *
  158. */
  159. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  160. {
  161. ComboBox comboBox = (ComboBox)sender;
  162. string tempstr = comboBox.Text;
  163. switch (tempstr)
  164. {
  165. case "ATT_DL1":
  166. case "ATT_UL1":
  167. case "ATT_DL2":
  168. case "ATT_UL2":
  169. case "ATT_DL3":
  170. case "ATT_UL3":
  171. case "ATT_DL4":
  172. case "ATT_UL4":
  173. dataGridView_TableSetting.Rows.Clear();
  174. ATT_TableLayoutSetting();
  175. break;
  176. case "DET_DL1":
  177. case "DET_DL2":
  178. case "DET_DL3":
  179. case "DET_DL4":
  180. dataGridView_TableSetting.Rows.Clear();
  181. DET_TableLayoutSetting(DLUL_Category.DL_DET);
  182. break;
  183. case "DET_UL1":
  184. case "DET_UL2":
  185. case "DET_UL3":
  186. case "DET_UL4":
  187. dataGridView_TableSetting.Rows.Clear();
  188. DET_TableLayoutSetting(DLUL_Category.UL_DET);
  189. break;
  190. case "TEMP_DL1":
  191. case "TEMP_UL1":
  192. case "TEMP_DL2":
  193. case "TEMP_UL2":
  194. case "TEMP_DL3":
  195. case "TEMP_UL3":
  196. case "TEMP_DL4":
  197. case "TEMP_UL4":
  198. dataGridView_TableSetting.Rows.Clear();
  199. Temp_TableLayoutSetting();
  200. break;
  201. default:
  202. MessageBox.Show("존재하지 않는 ComboBox 입니다.\r\n 확인해주세요.");
  203. break;
  204. }
  205. button_FileLoad_Click(sender, null);
  206. }
  207. private List<int> DataGridViewIndexOutput()
  208. {
  209. List<int> Tmplist = new List<int>();
  210. Int32 selectedCellCount =
  211. dataGridView_TableSetting.GetCellCount(DataGridViewElementStates.Selected);
  212. if (selectedCellCount > 0)
  213. {
  214. System.Text.StringBuilder sb =
  215. new System.Text.StringBuilder();
  216. //for (int i = 0;i < selectedCellCount; i++)
  217. for (int i = 0; i < selectedCellCount; i += 2)
  218. {
  219. sb.Append("Row: ");
  220. sb.Append(dataGridView_TableSetting.SelectedCells[i].RowIndex.ToString());
  221. Tmplist.Add(dataGridView_TableSetting.SelectedCells[i].RowIndex);
  222. /*sb.Append(", Column: ");
  223. sb.Append(dataGridView_TableSetting.SelectedCells[i].ColumnIndex.ToString());*/
  224. sb.Append(Environment.NewLine);
  225. }
  226. // sb.Append("Total: " + selectedCellCount.ToString());
  227. // MessageBox.Show(sb.ToString(), "Selected Cells");
  228. }
  229. return Tmplist;
  230. }
  231. private void button_MultiSet_Click(object sender, EventArgs e)
  232. {
  233. List<int> TmpList = new List<int>();
  234. TmpList = DataGridViewIndexOutput();
  235. for(int i = 0; i < TmpList.Count; i++)
  236. {
  237. dataGridView_TableSetting[1, TmpList[i]].Value = numericUpDown_MultiSet.Value.ToString();
  238. }
  239. }
  240. private void button_Expansion_Click(object sender, EventArgs e)
  241. {
  242. List<int> TmpList = new List<int>();
  243. int Count = 0;
  244. double MaxVal = 0, MinVal = 0,Result = 0;
  245. double Tmpdata = 0;
  246. TmpList = DataGridViewIndexOutput();
  247. TmpList.Sort();
  248. Count = (TmpList[TmpList.Count - 1] - TmpList[0]);
  249. MaxVal = Convert.ToDouble(dataGridView_TableSetting[1,TmpList[TmpList.Count - 1]].Value);
  250. MinVal = Convert.ToDouble(dataGridView_TableSetting[1, TmpList[0]].Value);
  251. Result = (MaxVal - MinVal) / Count;
  252. for (int i = 0; i < (Count - 1); i++)
  253. {
  254. Tmpdata = Convert.ToDouble(dataGridView_TableSetting[1, TmpList[0] + i].Value);
  255. if (comboBox_TableName.Text.Contains("DET") == true)
  256. {
  257. dataGridView_TableSetting[1, TmpList[0] + (i + 1)].Value = string.Format("{0:0.000}", Math.Round(Tmpdata + Result, 3));
  258. }
  259. else
  260. {
  261. dataGridView_TableSetting[1, TmpList[0] + (i + 1)].Value = string.Format("{0:0.0}", Math.Round(Tmpdata + Result, 1));
  262. }
  263. }
  264. /* for (int i = 0; i < TmpList.Count; i++)
  265. {
  266. dataGridView_TableSetting[1, TmpList[i]].Value = numericUpDown_MultiSet.Value.ToString();
  267. }*/
  268. }
  269. private void button_Initalize_Click(object sender, EventArgs e)
  270. {
  271. for (int i = 0; i < dataGridView_TableSetting.RowCount; i++)
  272. {
  273. dataGridView_TableSetting[1, i].Value = 0;
  274. }
  275. }
  276. private void button_CurrentOutput_Click(object sender, EventArgs e)
  277. {
  278. int columnIndex = dataGridView_TableSetting.CurrentCell.ColumnIndex;
  279. int rowIndex = dataGridView_TableSetting.CurrentCell.RowIndex;
  280. dataGridView_TableSetting[1, rowIndex].Value
  281. = numericUpDown_CurrentOutput.Value;
  282. }
  283. private void button_MultiOffset_Click(object sender, EventArgs e)
  284. {
  285. List<int> TmpList = new List<int>();
  286. TmpList = DataGridViewIndexOutput();
  287. double CurrentVal = 0, SumVal = 0;
  288. for (int i = 0; i < TmpList.Count; i++)
  289. {
  290. CurrentVal = Convert.ToDouble(dataGridView_TableSetting[1, TmpList[i]].Value);
  291. SumVal = Convert.ToDouble(numericUpDown_MultiOffset.Value);
  292. dataGridView_TableSetting[1, TmpList[i]].Value = Convert.ToString(CurrentVal + SumVal);
  293. }
  294. }
  295. // Bluecell_Serial bluecellserial = new Bluecell_Serial();
  296. private void button_PortOpen_Click(object sender, EventArgs e)
  297. {
  298. bool ret = false;
  299. ret = Serial_connectiondisable(serial.Serial_PortOpen(ref button_PortOpen, ref comboBox_Port));
  300. if (ret == false && timer_JdasMbic.Enabled == false)
  301. {
  302. timer_JdasMbic.Start(); //타이머를 발동시킨다.
  303. }
  304. else if (timer_JdasMbic.Enabled == true)
  305. {
  306. timer_JdasMbic.Stop(); //타이머를 멈춘다.
  307. }
  308. else
  309. {
  310. /*NOP*/
  311. }
  312. serial.Serial_Main_Form_Get(this);
  313. }
  314. private void button_terminal_Click(object sender, EventArgs e)
  315. {
  316. serial.Serial_TerminalOpen(serial);
  317. }
  318. public bool Serial_connectiondisable(Boolean on_off)
  319. {
  320. comboBox_Port.Enabled = on_off;
  321. comboBox_baudrate.Enabled = on_off;
  322. return on_off;
  323. }
  324. public bool TX_RX_Light = false;
  325. private delegate void StringSend(object label, String str);
  326. private delegate void SWVisible(object label, bool set);
  327. private delegate void GridviewSend(ref object gridview, string Text);
  328. private delegate void ByteSend(byte[] Text);
  329. private delegate String Stringreturn(object combobox);
  330. int offset = 0;
  331. byte[] rxBuffer;
  332. #if false
  333. private void sPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  334. {
  335. string startStr = "V";
  336. string endStr = "\n";
  337. try
  338. {
  339. if (offset == 0)
  340. {
  341. rxBuffer = new byte[4096];
  342. }
  343. string rxString = "";
  344. int intRecSize = serialPort_JdasMbic.BytesToRead;
  345. if (intRecSize != 0)
  346. {
  347. /* if (panel_GpsTest.Visible == true)
  348. {
  349. byte[] btdata = new byte[intRecSize];
  350. serialPort_JdasMbic.Read(btdata, 0, intRecSize);
  351. string data = Encoding.Default.GetString(rxBuffer);
  352. this.Invoke(new StringSend(Data_Recv_Str), data);
  353. }
  354. else*/
  355. {
  356. serialPort_JdasMbic.Read(rxBuffer, offset, intRecSize);
  357. offset += intRecSize;
  358. for (int iTemp = 0; iTemp < offset; iTemp++)
  359. {
  360. rxString += Convert.ToChar(rxBuffer[iTemp]);
  361. }
  362. /*
  363. *
  364. * Example
  365. * if (panel_SensorTest.Visible == true)
  366. {
  367. startStr = "V";
  368. endStr = "\n";
  369. }
  370. else if (panel_Catm1Test.Visible == true)
  371. {
  372. startStr = "B";
  373. endStr = "\n";
  374. }
  375. else if (panel_GpsTest.Visible == true)
  376. {
  377. startStr = "$";
  378. endStr = "\n";
  379. }
  380. */
  381. if (rxString.Contains(startStr))
  382. {
  383. rxString = rxString.Substring(rxString.IndexOf(startStr));
  384. if (rxString.Contains(endStr))
  385. {
  386. this.Invoke(new StringSend(Data_Recv_Str), rxString);
  387. //program.dataReceived(rxString, "Receive");
  388. offset = 0;
  389. }
  390. }
  391. else
  392. {
  393. this.Invoke(new StringSend(Data_Recv_Str), rxString);
  394. offset = 0;
  395. }
  396. }
  397. }
  398. }
  399. catch { }
  400. }
  401. #endif
  402. int LineLimit = 500;
  403. [DllImport("user32.dll")]
  404. public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
  405. private const int WM_SETREDRAW = 11;
  406. public void Data_Recv_Str(string text)
  407. {
  408. System.Windows.Forms.RichTextBox tbReceived = null;
  409. //tbReceived = richTextBox_Sensor;
  410. int nLimitLines = Convert.ToInt32(LineLimit); //제한 라인 수
  411. try
  412. {
  413. try
  414. {
  415. SendMessage(this.Handle, WM_SETREDRAW, false, 0);
  416. }
  417. catch (Exception e) { MessageBox.Show(e.StackTrace); }
  418. if (tbReceived.Lines.Length > nLimitLines)
  419. {
  420. LinkedList<string> tempLines = new LinkedList<string>(tbReceived.Lines);
  421. while ((tempLines.Count - nLimitLines) > 0)
  422. {
  423. tempLines.RemoveFirst();
  424. }
  425. tbReceived.Lines = tempLines.ToArray();
  426. }
  427. try
  428. {
  429. SendMessage(this.Handle, WM_SETREDRAW, true, 0);
  430. }
  431. catch { return; }
  432. /* Example
  433. if (panel_SensorTest.Visible == true)
  434. {
  435. Sensor_TestFunc(text);
  436. tbReceived.AppendText(text);
  437. }
  438. else
  439. {
  440. tbReceived.AppendText(text);
  441. }
  442. */
  443. tbReceived.SelectionStart = tbReceived.Text.Length;//맨 마지막 선택...
  444. tbReceived.ScrollToCaret();
  445. }
  446. catch { try { SendMessage(this.Handle, WM_SETREDRAW, true, 0); } catch { return; } }
  447. }
  448. public void Data_Recv_Str(byte[] text)
  449. {
  450. string strtext = Encoding.Default.GetString(text);
  451. System.Windows.Forms.RichTextBox tbReceived = null;
  452. // tbReceived = richTextBox_Sensor;
  453. int nLimitLines = Convert.ToInt32(LineLimit); //제한 라인 수
  454. try
  455. {
  456. try
  457. {
  458. SendMessage(this.Handle, WM_SETREDRAW, false, 0);
  459. }
  460. catch (Exception e) { MessageBox.Show(e.StackTrace); }
  461. if (tbReceived.Lines.Length > nLimitLines)
  462. {
  463. LinkedList<string> tempLines = new LinkedList<string>(tbReceived.Lines);
  464. while ((tempLines.Count - nLimitLines) > 0)
  465. {
  466. tempLines.RemoveFirst();
  467. }
  468. tbReceived.Lines = tempLines.ToArray();
  469. }
  470. try
  471. {
  472. SendMessage(this.Handle, WM_SETREDRAW, true, 0);
  473. }
  474. catch { return; }
  475. /* Example
  476. if (panel_SensorTest.Visible == true)
  477. {
  478. Sensor_TestFunc(strtext);
  479. tbReceived.AppendText(strtext);
  480. }
  481. else
  482. {
  483. tbReceived.AppendText(strtext);
  484. }
  485. */
  486. tbReceived.SelectionStart = tbReceived.Text.Length;//맨 마지막 선택...
  487. tbReceived.ScrollToCaret();
  488. }
  489. catch { try { SendMessage(this.Handle, WM_SETREDRAW, true, 0); } catch { return; } }
  490. }
  491. Int64 Timer_Cnt = 0;
  492. Int32 ReqTimer_Cnt = 0;
  493. Bluecell_BootProtocol bluecell_BootProtocol = new Bluecell_BootProtocol();
  494. private void timer1_Tick(object sender, EventArgs e)
  495. {
  496. Update_Serial update_Serial = null;
  497. bool req_set = false;
  498. if (update_Serial == null)
  499. {
  500. update_Serial = (Update_Serial)serial.FileDownloadClass_Get();
  501. if (update_Serial == null)
  502. req_set = true;
  503. else if (update_Serial.Update_ready == false)
  504. req_set = true;
  505. }
  506. if (req_set)
  507. {
  508. ReqTimer_Cnt++;
  509. }
  510. if (TX_RX_Light == true)
  511. {
  512. Timer_Cnt++;
  513. }
  514. if (Timer_Cnt < 1000)
  515. {
  516. if (this.pictureBox_G_TX.Visible == true)
  517. {
  518. TX_Light_OFF();
  519. }
  520. if (this.pictureBox_G_RX.Visible == true)
  521. {
  522. RX_Light_OFF();
  523. }
  524. Timer_Cnt = 0;
  525. TX_RX_Light = false;
  526. }
  527. if (ReqTimer_Cnt > 6)
  528. {
  529. bluecell_BootProtocol.Bluecell_RF_Status_Req(serial);
  530. ReqTimer_Cnt = 0;
  531. }
  532. }
  533. private void radioButton_ATT_CheckedChanged(object sender, EventArgs e)
  534. {
  535. RadioButton radioButton = (RadioButton)sender;
  536. switch (radioButton.Text)
  537. {
  538. case "ATT1":
  539. label_Table_ATTDL.Text = "ATT_DL1";
  540. label_Table_ATTUL.Text = "ATT_UL1";
  541. break;
  542. case "ATT2":
  543. label_Table_ATTDL.Text = "ATT_DL2";
  544. label_Table_ATTUL.Text = "ATT_UL2";
  545. break;
  546. case "ATT3":
  547. label_Table_ATTDL.Text = "ATT_DL3";
  548. label_Table_ATTUL.Text = "ATT_UL3";
  549. break;
  550. case "ATT4":
  551. label_Table_ATTDL.Text = "ATT_DL4";
  552. label_Table_ATTUL.Text = "ATT_UL4";
  553. break;
  554. }
  555. }
  556. private void button_TableDL_Click(object sender, EventArgs e)
  557. {
  558. }
  559. private void button_TableUL_Click(object sender, EventArgs e)
  560. {
  561. }
  562. Update_Serial file = new Update_Serial();
  563. private void button_FirmwareUpdate_Click(object sender, EventArgs e)
  564. {
  565. OpenFileDialog ofd = new OpenFileDialog();
  566. //FileDownload file = new FileDownload();
  567. if (setcheck_checkBox.Checked == true)
  568. setcheck_checkBox.Checked = false;
  569. file.ShowFileOpenDialog(ref serial, ofd);
  570. }
  571. public void TX_Light_ON()
  572. {
  573. this.pictureBox_G_TX.Visible = true;
  574. this.pictureBox_R_TX.Visible = false;
  575. }
  576. public void TX_Light_OFF()
  577. {
  578. this.pictureBox_R_TX.Visible = true;
  579. this.pictureBox_G_TX.Visible = false;
  580. }
  581. public void RX_Light_ON()
  582. {
  583. this.pictureBox_G_RX.Visible = true;
  584. this.pictureBox_R_RX.Visible = false;
  585. }
  586. public void RX_Light_OFF()
  587. {
  588. this.pictureBox_R_RX.Visible = true;
  589. this.pictureBox_G_RX.Visible = false;
  590. }
  591. const byte BLUECELL_RESET_LENGTH = 7;
  592. public const byte BLUECELL_HEADER = 0xBE;
  593. public const byte BLUECELL_TAILER = 0xEB;
  594. const byte BLUECELL_ATTEN_LENGTH = 32 + 5;
  595. #if false
  596. private void button_ATT_Click_1(object sender, EventArgs e)
  597. {
  598. byte[] temp_buf = new byte[BLUECELL_ATTEN_LENGTH];
  599. Button btn = (Button)sender;
  600. byte datatype = (byte)Bluecell_BootProtocol.DATATYPE.ATTSET;
  601. Int16[] DL = new Int16[4];
  602. Int16[] UL = new Int16[4];
  603. Int16[] ALC_MAX = new Int16[4];
  604. Int16[] ALC_MIN = new Int16[4];
  605. byte tmp_H = 0;
  606. byte tmp_L = 0;
  607. DL[0] = Convert.ToInt16(numericUpDown_ATT_DL1.Value * 10);
  608. DL[1] = Convert.ToInt16(numericUpDown_ATT_DL2.Value * 10);
  609. DL[2] = Convert.ToInt16(numericUpDown_ATT_DL3.Value * 10);
  610. DL[3] = Convert.ToInt16(numericUpDown_ATT_DL4.Value * 10);
  611. UL[0] = Convert.ToInt16(numericUpDown_ATT_UL1.Value * 10);
  612. UL[1] = Convert.ToInt16(numericUpDown_ATT_UL2.Value * 10);
  613. UL[2] = Convert.ToInt16(numericUpDown_ATT_UL3.Value * 10);
  614. UL[3] = Convert.ToInt16(numericUpDown_ATT_UL4.Value * 10);
  615. /*ALC_MAX[0] = Convert.ToInt16(numericUpDown_ALC1_MAX.Value * 10);
  616. ALC_MAX[1] = Convert.ToInt16(numericUpDown_ALC2_MAX.Value * 10);
  617. ALC_MAX[2] = Convert.ToInt16(numericUpDown_ALC3_MAX.Value * 10);
  618. ALC_MAX[3] = Convert.ToInt16(numericUpDown_ALC4_MAX.Value * 10);
  619. ALC_MIN[0] = Convert.ToInt16(numericUpDown_ALC1_MIN.Value * 10);
  620. ALC_MIN[1] = Convert.ToInt16(numericUpDown_AGC2_MIN.Value * 10);
  621. ALC_MIN[2] = Convert.ToInt16(numericUpDown_AGC3_MIN.Value * 10);
  622. ALC_MIN[3] = Convert.ToInt16(numericUpDown_AGC4_MIN.Value * 10);
  623. */
  624. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  625. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = Convert.ToByte(datatype);
  626. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = 6;
  627. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = 5;
  628. for (int i = 0; i < 4; i++)
  629. {
  630. tmp_H = Convert.ToByte((DL[i] & 0xFF00) >> 8);
  631. tmp_L = Convert.ToByte((DL[i] & 0x00FF));
  632. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2] = tmp_H;
  633. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2 + 1] = tmp_L;
  634. }
  635. for (int i = 4; i < 8; i++)
  636. {
  637. tmp_H = Convert.ToByte((UL[i - 4] & 0xFF00) >> 8);
  638. tmp_L = Convert.ToByte((UL[i - 4] & 0x00FF));
  639. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2] = tmp_H;
  640. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2 + 1] = tmp_L;
  641. }
  642. for (int i = 8; i < 12; i++)
  643. {
  644. tmp_H = Convert.ToByte((ALC_MAX[i - 8] & 0xFF00) >> 8);
  645. tmp_L = Convert.ToByte((ALC_MAX[i - 8] & 0x00FF));
  646. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2] = tmp_H;
  647. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2 + 1] = tmp_L;
  648. }
  649. for (int i = 12; i < 16; i++)
  650. {
  651. tmp_H = Convert.ToByte((ALC_MIN[i - 12] & 0xFF00) >> 8);
  652. tmp_L = Convert.ToByte((ALC_MIN[i - 12] & 0x00FF));
  653. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2] = tmp_H;
  654. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + i * 2 + 1] = tmp_L;
  655. }
  656. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 16 * 2] = 1; //CRC
  657. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  658. ReqTimer_Cnt = 0;
  659. }
  660. #endif
  661. private void button_ATT_Click_2(object sender, EventArgs e)
  662. {
  663. byte[] temp_buf = new byte[TableGetMaxLength];
  664. NumericUpDown numeric = (NumericUpDown)sender;
  665. byte tmp_H = 0;
  666. byte tmp_L = 0;
  667. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  668. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = TableGetMaxLength - 3;
  669. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = TableGetMaxLength - 2;
  670. Int16 UserData = Convert.ToInt16(numeric.Value * 10);
  671. tmp_H = Convert.ToByte((UserData & 0xFF00) >> 8);
  672. tmp_L = Convert.ToByte((UserData & 0x00FF));
  673. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = tmp_H;
  674. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 1] = tmp_L;
  675. switch (numeric.Name)
  676. {
  677. case "numericUpDown_ATT_DL1":
  678. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  679. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL1;
  680. break;
  681. case "numericUpDown_ATT_DL2":
  682. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  683. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL2;
  684. break;
  685. case "numericUpDown_ATT_DL3":
  686. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  687. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL3;
  688. break;
  689. case "numericUpDown_ATT_DL4":
  690. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  691. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL4;
  692. break;
  693. case "numericUpDown_ATT_UL1":
  694. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  695. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL1;
  696. break;
  697. case "numericUpDown_ATT_UL2":
  698. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  699. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL2;
  700. break;
  701. case "numericUpDown_ATT_UL3":
  702. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  703. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL3;
  704. break;
  705. case "numericUpDown_ATT_UL4":
  706. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  707. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL4;
  708. break;
  709. case "numericUpDown_DL1_User":
  710. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  711. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL1_USER;
  712. break;
  713. case "numericUpDown_DL2_User":
  714. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  715. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL2_USER;
  716. break;
  717. case "numericUpDown_DL3_User":
  718. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  719. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL3_USER;
  720. break;
  721. case "numericUpDown_DL4_User":
  722. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  723. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_DL4_USER;
  724. break;
  725. case "numericUpDown_UL1_User":
  726. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  727. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL1_USER;
  728. break;
  729. case "numericUpDown_UL2_User":
  730. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  731. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL2_USER;
  732. break;
  733. case "numericUpDown_UL3_User":
  734. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  735. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL3_USER;
  736. break;
  737. case "numericUpDown_UL4_User":
  738. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  739. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ATT_UL4_USER;
  740. break;
  741. }
  742. //temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 16 * 2] = 1; //CRC
  743. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  744. ReqTimer_Cnt = 0;
  745. }
  746. private void pictureBox_ATT_PATH_Ctrl_Click(object sender, EventArgs e)
  747. {
  748. byte[] temp_buf = new byte[BLUECELL_RESET_LENGTH];
  749. PictureBox pictureBox = (PictureBox)sender;
  750. DATATYPE datatype;
  751. ReqTimer_Cnt = 0;
  752. switch (pictureBox.Name)
  753. {
  754. case "pictureBox_DL1_PATH_OFF":
  755. pictureBox_DL1_PATH_ON.Visible = true;
  756. pictureBox_DL1_PATH_OFF.Visible = false;
  757. datatype = DATATYPE.ATT_DL1_PATH;
  758. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  759. break;
  760. case "pictureBox_DL2_PATH_OFF":
  761. pictureBox_DL2_PATH_ON.Visible = true;
  762. pictureBox_DL2_PATH_OFF.Visible = false;
  763. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  764. datatype = DATATYPE.ATT_DL2_PATH;
  765. break;
  766. case "pictureBox_DL3_PATH_OFF":
  767. pictureBox_DL3_PATH_ON.Visible = true;
  768. pictureBox_DL3_PATH_OFF.Visible = false;
  769. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  770. datatype = DATATYPE.ATT_DL3_PATH;
  771. break;
  772. case "pictureBox_DL4_PATH_OFF":
  773. pictureBox_DL4_PATH_ON.Visible = true;
  774. pictureBox_DL4_PATH_OFF.Visible = false;
  775. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  776. datatype = DATATYPE.ATT_DL4_PATH;
  777. break;
  778. case "pictureBox_UL1_PATH_OFF":
  779. pictureBox_UL1_PATH_ON.Visible = true;
  780. pictureBox_UL1_PATH_OFF.Visible = false;
  781. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  782. datatype = DATATYPE.ATT_UL1_PATH;
  783. break;
  784. case "pictureBox_UL2_PATH_OFF":
  785. pictureBox_UL2_PATH_ON.Visible = true;
  786. pictureBox_UL2_PATH_OFF.Visible = false;
  787. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  788. datatype = DATATYPE.ATT_UL2_PATH;
  789. break;
  790. case "pictureBox_UL3_PATH_OFF":
  791. pictureBox_UL3_PATH_ON.Visible = true;
  792. pictureBox_UL3_PATH_OFF.Visible = false;
  793. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  794. datatype = DATATYPE.ATT_UL3_PATH;
  795. break;
  796. case "pictureBox_UL4_PATH_OFF":
  797. pictureBox_UL4_PATH_ON.Visible = true;
  798. pictureBox_UL4_PATH_OFF.Visible = false;
  799. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  800. datatype = DATATYPE.ATT_UL4_PATH;
  801. break;
  802. case "pictureBox_DL1_PATH_ON":
  803. pictureBox_DL1_PATH_OFF.Visible = true;
  804. pictureBox_DL1_PATH_ON.Visible = false;
  805. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  806. datatype = DATATYPE.ATT_DL1_PATH;
  807. break;
  808. case "pictureBox_DL2_PATH_ON":
  809. pictureBox_DL2_PATH_OFF.Visible = true;
  810. pictureBox_DL2_PATH_ON.Visible = false;
  811. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  812. datatype = DATATYPE.ATT_DL2_PATH;
  813. break;
  814. case "pictureBox_DL3_PATH_ON":
  815. pictureBox_DL3_PATH_OFF.Visible = true;
  816. pictureBox_DL3_PATH_ON.Visible = false;
  817. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  818. datatype = DATATYPE.ATT_DL3_PATH;
  819. break;
  820. case "pictureBox_DL4_PATH_ON":
  821. pictureBox_DL4_PATH_OFF.Visible = true;
  822. pictureBox_DL4_PATH_ON.Visible = false;
  823. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  824. datatype = DATATYPE.ATT_DL4_PATH;
  825. break;
  826. case "pictureBox_UL1_PATH_ON":
  827. pictureBox_UL1_PATH_OFF.Visible = true;
  828. pictureBox_UL1_PATH_ON.Visible = false;
  829. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  830. datatype = DATATYPE.ATT_UL1_PATH;
  831. break;
  832. case "pictureBox_UL2_PATH_ON":
  833. pictureBox_UL2_PATH_OFF.Visible = true;
  834. pictureBox_UL2_PATH_ON.Visible = false;
  835. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  836. datatype = DATATYPE.ATT_UL2_PATH;
  837. break;
  838. case "pictureBox_UL3_PATH_ON":
  839. pictureBox_UL3_PATH_OFF.Visible = true;
  840. pictureBox_UL3_PATH_ON.Visible = false;
  841. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  842. datatype = DATATYPE.ATT_UL3_PATH;
  843. break;
  844. case "pictureBox_UL4_PATH_ON":
  845. pictureBox_UL4_PATH_OFF.Visible = true;
  846. pictureBox_UL4_PATH_ON.Visible = false;
  847. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  848. datatype = DATATYPE.ATT_UL4_PATH;
  849. break;
  850. case "pictureBox_SelfTest1_ON":
  851. pictureBox_SelfTest1_OFF.Visible = true;
  852. pictureBox_SelfTest1_ON.Visible = false;
  853. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  854. datatype = DATATYPE.ATT_SelfTest1;
  855. break;
  856. case "pictureBox_SelfTest2_ON":
  857. pictureBox_SelfTest2_OFF.Visible = true;
  858. pictureBox_SelfTest2_ON.Visible = false;
  859. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  860. datatype = DATATYPE.ATT_SelfTest2;
  861. break;
  862. case "pictureBox_SelfTest3_ON":
  863. pictureBox_SelfTest3_OFF.Visible = true;
  864. pictureBox_SelfTest3_ON.Visible = false;
  865. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  866. datatype = DATATYPE.ATT_SelfTest3;
  867. break;
  868. case "pictureBox_SelfTest4_ON":
  869. pictureBox_SelfTest4_OFF.Visible = true;
  870. pictureBox_SelfTest4_ON.Visible = false;
  871. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  872. datatype = DATATYPE.ATT_SelfTest4;
  873. break;
  874. case "pictureBox_SelfTest1_OFF":
  875. pictureBox_SelfTest1_ON.Visible = true;
  876. pictureBox_SelfTest1_OFF.Visible = false;
  877. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  878. datatype = DATATYPE.ATT_SelfTest1;
  879. break;
  880. case "pictureBox_SelfTest2_OFF":
  881. pictureBox_SelfTest2_ON.Visible = true;
  882. pictureBox_SelfTest2_OFF.Visible = false;
  883. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  884. datatype = DATATYPE.ATT_SelfTest2;
  885. break;
  886. case "pictureBox_SelfTest3_OFF":
  887. pictureBox_SelfTest3_ON.Visible = true;
  888. pictureBox_SelfTest3_OFF.Visible = false ;
  889. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  890. datatype = DATATYPE.ATT_SelfTest3;
  891. break;
  892. case "pictureBox_SelfTest4_OFF":
  893. pictureBox_SelfTest4_ON.Visible = true;
  894. pictureBox_SelfTest4_OFF.Visible = false;
  895. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  896. datatype = DATATYPE.ATT_SelfTest4;
  897. break;
  898. case "pictureBox_DL_Shutdown_OFF":
  899. pictureBox_DL_Shutdown_ON.Visible = true;
  900. pictureBox_DL_Shutdown_OFF.Visible = false;
  901. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  902. datatype = DATATYPE.Bluecell_DLI_Shutdown_ON_OFF;
  903. break;
  904. case "pictureBox_DL_Shutdown_ON":
  905. pictureBox_DL_Shutdown_OFF.Visible = true;
  906. pictureBox_DL_Shutdown_ON.Visible = false;
  907. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  908. datatype = DATATYPE.Bluecell_DLI_Shutdown_ON_OFF;
  909. break;
  910. case "pictureBox_UL_Shutdown_OFF":
  911. pictureBox_UL_Shutdown_ON.Visible = true;
  912. pictureBox_UL_Shutdown_OFF.Visible = false;
  913. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  914. datatype = DATATYPE.Bluecell_ULO_Shutdown_ON_OFF;
  915. break;
  916. case "pictureBox_UL_Shutdown_ON":
  917. pictureBox_UL_Shutdown_OFF.Visible = true;
  918. pictureBox_UL_Shutdown_ON.Visible = false;
  919. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  920. datatype = DATATYPE.Bluecell_ULO_Shutdown_ON_OFF;
  921. break;
  922. default:
  923. MessageBox.Show("잘 못된 값 입니다. 확인 부탁드립니다.");
  924. return;
  925. }
  926. pictureBox.Visible = false;
  927. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  928. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = Convert.ToByte(datatype);
  929. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = 6;
  930. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = 5;
  931. //temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 0;
  932. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 1] = 0;
  933. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 2] = 1; //CRC
  934. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  935. }
  936. private void button_ExcelSave_Click(object sender, EventArgs e)
  937. {
  938. GridViewExcel(this.dataGridView_TableSetting);
  939. button_ExcelKill_Click(null, null);
  940. //ExportExcel(false);
  941. }
  942. public void GridViewExcel(DataGridView grid)
  943. {
  944. Excel.Application oXL;
  945. Excel._Workbook oWB;
  946. Excel._Worksheet oSheet;
  947. //Excel.Range oRng;
  948. object missingType = Type.Missing;
  949. this.saveFileDialog1.FileName = Application.StartupPath + "\\" + comboBox_TableName.Text;
  950. this.saveFileDialog1.DefaultExt = "xls";
  951. this.saveFileDialog1.Filter = "Excel files (*.xls)|*.xls";
  952. this.saveFileDialog1.InitialDirectory = "{Desktop}";
  953. //DialogResult result = saveFileDialog1.ShowDialog();
  954. //if (result == DialogResult.OK)
  955. {
  956. try
  957. {
  958. //Start Excel and get Application object.
  959. oXL = new Excel.Application();
  960. oXL.Visible = false;
  961. //Get a new workbook.
  962. oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
  963. //oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
  964. oSheet = (Excel._Worksheet)oWB.ActiveSheet;
  965. //oSheet = oWB.Worksheets.get_Item(1) as Excel.Worksheet;
  966. //oSheet = (Excel.Worksheet)oWB.Worksheets.Item[2] as Excel._Worksheet;
  967. //oWB.Worksheets.Item[1] as Excel._Worksheet;
  968. //Add table headers going cell by cell.
  969. int k = 0;
  970. string[] colHeader = new string[grid.ColumnCount];
  971. for (int i = 0; i < grid.Columns.Count; i++)
  972. {
  973. oSheet.Cells[1, i + 1] = grid.Columns[i].HeaderText;
  974. k = i + 65;
  975. colHeader[i] = Convert.ToString((char)k);
  976. }
  977. //Format A1:D1 as bold, vertical alignment = center.
  978. oSheet.get_Range("A1", colHeader[colHeader.Length - 1] + "1").Font.Bold = true;
  979. oSheet.get_Range("A1", colHeader[colHeader.Length - 1] + "1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
  980. // Create an array to multiple values at once.
  981. object[,] saNames = new object[grid.RowCount, grid.ColumnCount];
  982. string tp;
  983. for (int i = 0; i < grid.RowCount; i++)
  984. {
  985. for (int j = 0; j < grid.ColumnCount; j++)
  986. {
  987. tp = grid.Rows[i].Cells[j].ValueType.Name;
  988. if (tp == "String") //2000-01-01 형태의 날짜 필터하기 위함(숫자로 변환 방지)
  989. saNames[i, j] = "'" + grid.Rows[i].Cells[j].Value.ToString();
  990. else
  991. saNames[i, j] = grid.Rows[i].Cells[j].Value;
  992. }
  993. }
  994. //Fill A2:B6 with an array of values (First and Last Names).
  995. //oSheet.get_Range("A2", "B6").Value2 = saNames;
  996. oSheet.get_Range(colHeader[0] + "2", colHeader[colHeader.Length - 1] + (grid.RowCount + 1)).Value2 = saNames;
  997. oXL.Visible = false;
  998. oXL.UserControl = false;
  999. oWB.SaveAs(saveFileDialog1.FileName,
  1000. Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,
  1001. missingType, missingType, missingType, missingType,
  1002. Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
  1003. missingType, missingType, missingType, missingType, missingType);
  1004. oWB.Close(false, missingType, missingType);
  1005. Cursor.Current = Cursors.Default;
  1006. //MessageBox.Show("Save Success!!!");
  1007. AutoClosingMessageBox.Show("Save Success", "알림", 100);
  1008. }
  1009. catch (Exception theException)
  1010. {
  1011. String errorMessage;
  1012. errorMessage = "Error: ";
  1013. errorMessage = String.Concat(errorMessage, theException.Message);
  1014. errorMessage = String.Concat(errorMessage, " Line: ");
  1015. errorMessage = String.Concat(errorMessage, theException.Source);
  1016. MessageBox.Show(errorMessage, "Error");
  1017. }
  1018. }
  1019. }
  1020. public void ReadExcelData(string path)
  1021. { // path는 Excel파일의 전체 경로입니다.
  1022. // 예. D:\test\test.xslx
  1023. Excel.Application excelApp = null;
  1024. Excel.Workbook wb = null;
  1025. Excel.Worksheet ws = null;
  1026. try
  1027. {
  1028. excelApp = new Excel.Application();
  1029. wb = excelApp.Workbooks.Open(path);
  1030. // path 대신 문자열도 가능합니다
  1031. // 예. Open(@"D:\test\test.xslx");
  1032. ws = wb.Worksheets.get_Item(1) as Excel.Worksheet;
  1033. // 첫번째 Worksheet를 선택합니다.
  1034. Excel.Range rng = ws.UsedRange; // '여기'
  1035. // 현재 Worksheet에서 사용된 셀 전체를 선택합니다.
  1036. object[,] data = rng.Value;
  1037. // 열들에 들어있는 Data를 배열 (One-based array)로 받아옵니다.
  1038. for (int r = 1; r < data.GetLength(0); r++)
  1039. {
  1040. for (int c = 1; c <= data.GetLength(1); c++)
  1041. {
  1042. if (data[r, c] == null)
  1043. {
  1044. continue;
  1045. }
  1046. //dataGridView_TableSetting.SelectedRows(r - 1).Cells(c - 1).Value = data[r + 1, c];
  1047. // Data 빼오기
  1048. // data[r, c] 는 excel의 (r, c) 셀 입니다.
  1049. // data.GetLength(0)은 엑셀에서 사용되는 행의 수를 가져오는 것이고,
  1050. // data.GetLength(1)은 엑셀에서 사용되는 열의 수를 가져오는 것입니다.
  1051. // GetLength와 [ r, c] 의 순서를 바꿔서 사용할 수 있습니다.
  1052. }
  1053. dataGridView_TableSetting.Rows[r - 1].Cells[1].Value = data[r + 1, 2];
  1054. }
  1055. wb.Close(true);
  1056. excelApp.Quit();
  1057. }
  1058. catch (Exception ex)
  1059. {
  1060. throw ex;
  1061. }
  1062. finally
  1063. {
  1064. ReleaseExcelObject(ws);
  1065. ReleaseExcelObject(wb);
  1066. ReleaseExcelObject(excelApp);
  1067. button_ExcelKill_Click(null,null);
  1068. }
  1069. }
  1070. private void ReleaseExcelObject(object obj)
  1071. {
  1072. try
  1073. {
  1074. System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
  1075. obj = null;
  1076. }
  1077. catch (Exception ex)
  1078. {
  1079. obj = null;
  1080. MessageBox.Show("Unable to release the Object " + ex.ToString());
  1081. }
  1082. finally
  1083. {
  1084. GC.Collect();
  1085. }
  1086. }
  1087. private void button_ExcelLoad_Click(object sender, EventArgs e)
  1088. {
  1089. string path = Application.StartupPath + "\\" + comboBox_TableName.Text + ".xls";
  1090. ReadExcelData(path);
  1091. }
  1092. private void button_ExcelKill_Click(object sender, EventArgs e)
  1093. {
  1094. System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("EXCEL");
  1095. foreach (System.Diagnostics.Process p in process)
  1096. {
  1097. if (!string.IsNullOrEmpty(p.ProcessName))
  1098. {
  1099. try
  1100. {
  1101. p.Kill();
  1102. }
  1103. catch { }
  1104. }
  1105. }
  1106. }
  1107. enum BluecellReqIndex{
  1108. bluecell_header,
  1109. bluecell_type,
  1110. bluecell_length,
  1111. bluecell_crcindex,
  1112. Selftest1,
  1113. Selftest2,
  1114. Selftest3,
  1115. Selftest4,
  1116. ATT_DL1_PATH,
  1117. ATT_DL2_PATH,
  1118. ATT_DL3_PATH,
  1119. ATT_DL4_PATH,
  1120. ATT_UL1_PATH,
  1121. ATT_UL2_PATH,
  1122. ATT_UL3_PATH,
  1123. ATT_UL4_PATH,
  1124. ATT_DL1_H,
  1125. ATT_DL1_L,
  1126. ATT_DL2_H,
  1127. ATT_DL2_L,
  1128. ATT_DL3_H,
  1129. ATT_DL3_L,
  1130. ATT_DL4_H,
  1131. ATT_DL4_L,
  1132. ATT_UL1_H,
  1133. ATT_UL1_L,
  1134. ATT_UL2_H,
  1135. ATT_UL2_L,
  1136. ATT_UL3_H,
  1137. ATT_UL3_L,
  1138. ATT_UL4_H,
  1139. ATT_UL4_L,
  1140. ULO_Level1_H,
  1141. ULO_Level1_L,
  1142. ULO_Level2_H,
  1143. ULO_Level2_L,
  1144. ULO_Level3_H,
  1145. ULO_Level3_L,
  1146. ULO_Level4_H,
  1147. ULO_Level4_L,
  1148. DLI_Level1_H,
  1149. DLI_Level1_L,
  1150. DLI_Level2_H,
  1151. DLI_Level2_L,
  1152. DLI_Level3_H,
  1153. DLI_Level3_L,
  1154. DLI_Level4_H,
  1155. DLI_Level4_L,
  1156. BLUECELL_RESERVE1,
  1157. DET_TEMP,
  1158. DLI_AGC_ON_OFF,
  1159. ULO_ALC_ON_OFF,
  1160. BLUECELL_RESERVE2,
  1161. BLUECELL_RESERVE3,
  1162. BLUECELL_RESERVE4,
  1163. BLUECELL_RESERVE5,
  1164. BLUECELL_RESERVE6,
  1165. BLUECELL_RESERVE7,
  1166. BLUECELL_RESERVE8,
  1167. BLUECELL_RESERVE9,
  1168. BLUECELL_RESERVE10,
  1169. BLUECELL_RESERVE11,
  1170. BLUECELL_RESERVE12,
  1171. BLUECELL_RESERVE13,
  1172. BLUECELL_RESERVE14,
  1173. BLUECELL_RESERVE15,
  1174. ULO_ALC_Threshold_H,
  1175. ULO_ALC_Threshold_L,
  1176. BLUECELL_RESERVE16,
  1177. BLUECELL_RESERVE17,
  1178. BLUECELL_RESERVE18,
  1179. BLUECELL_RESERVE19,
  1180. BLUECELL_RESERVE20,
  1181. BLUECELL_RESERVE21,
  1182. bluecell_User_DL1_H,
  1183. bluecell_User_DL1_L,
  1184. bluecell_User_DL2_H,
  1185. bluecell_User_DL2_L,
  1186. bluecell_User_DL3_H,
  1187. bluecell_User_DL3_L,
  1188. bluecell_User_DL4_H,
  1189. bluecell_User_DL4_L,
  1190. bluecell_User_UL1_H,
  1191. bluecell_User_UL1_L,
  1192. bluecell_User_UL2_H,
  1193. bluecell_User_UL2_L,
  1194. bluecell_User_UL3_H,
  1195. bluecell_User_UL3_L,
  1196. bluecell_User_UL4_H,
  1197. bluecell_User_UL4_L,
  1198. bluecell_User_TEMP_H,
  1199. bluecell_User_TEMP_L,
  1200. bluecell_User_TEMP_OFFSET,
  1201. Temp_High_Threshold,
  1202. Temp_High_Threshold_Default,
  1203. DLI_Level_High_Threshold_H,
  1204. DLI_Level_High_Threshold_L,
  1205. DLI_Level_Low_Threshold_H,
  1206. DLI_Level_Low_Threshold_L,
  1207. DLI_Level_High_Low_Threshold_default,
  1208. ALARM_TEMP_HIGH, //bit
  1209. ALARM_DLI_Level,
  1210. ALARM_DLI_SHTUTDOWN,
  1211. ALARM_DLI_AGC_Alarm,
  1212. ALARM_ULO_ALC_Alarm,
  1213. ALARM_ULO_Level,
  1214. ALARM_ULO_SHTUTDOWN,
  1215. ALARM_MASK1,
  1216. ALARM_TESTMODE,
  1217. ALARM_Test_Dummy1,
  1218. ALARM_Test_Dummy2,
  1219. ALARM_Test_Dummy3,
  1220. CPUVERSION1,
  1221. CPUVERSION2,
  1222. CPUVERSION3,
  1223. CPU_Current_Bank,
  1224. CPU_Bank_Select,//Reboot_by,
  1225. CPU_Bank1_Image_Version1,
  1226. CPU_Bank1_Image_Version2,
  1227. CPU_Bank1_Image_Version3,
  1228. CPU_Bank1_Image_BuildTime1,
  1229. CPU_Bank1_Image_BuildTime2,
  1230. CPU_Bank1_Image_BuildTime3,
  1231. CPU_Bank1_Image_BuildTime4,
  1232. CPU_Bank1_Image_BuildTime5,
  1233. CPU_Bank1_Image_BuildTime6,
  1234. CPU_Bank1_Image_Name,
  1235. CPU_Bank2_Image_Version1 = CPU_Bank1_Image_Name + 32,
  1236. CPU_Bank2_Image_Version2,
  1237. CPU_Bank2_Image_Version3,
  1238. CPU_Bank2_Image_BuildTime1,
  1239. CPU_Bank2_Image_BuildTime2,
  1240. CPU_Bank2_Image_BuildTime3,
  1241. CPU_Bank2_Image_BuildTime4,
  1242. CPU_Bank2_Image_BuildTime5,
  1243. CPU_Bank2_Image_BuildTime6,
  1244. CPU_Bank2_Image_Name,
  1245. S_W_Reset = CPU_Bank2_Image_Name + 32,
  1246. Factory_Set_Initialization,
  1247. Temp_High_Alarm,
  1248. LED_TEST,
  1249. NODE,
  1250. Type,
  1251. PCB_Version,
  1252. Serial_Number = PCB_Version + 2, // INDEX : 20
  1253. Manufacture = Serial_Number + 20,
  1254. Manufacture_Date,
  1255. Freq_ID = Manufacture_Date + 3,
  1256. Carrier_ID,
  1257. Carrier_ON_OFF,
  1258. DLI_Level_High_Alarm1,
  1259. DLI_Level_High_Alarm2,
  1260. DLI_Level_High_Alarm3,
  1261. DLI_Level_High_Alarm4,
  1262. DLI_Level_Low_Alarm1,
  1263. DLI_Level_Low_Alarm2,
  1264. DLI_Level_Low_Alarm3,
  1265. DLI_Level_Low_Alarm4,
  1266. DLI_FRBT_Atten1_H,
  1267. DLI_FRBT_Atten1_L,
  1268. DLI_FRBT_Atten2_H,
  1269. DLI_FRBT_Atten2_L,
  1270. DLI_FRBT_Atten3_H,
  1271. DLI_FRBT_Atten3_L,
  1272. DLI_FRBT_Atten4_H,
  1273. DLI_FRBT_Atten4_L,
  1274. DLI_FRBT_D_Day,
  1275. DLI_FRBT_Status,
  1276. DLI_AGC_Threshold_H,
  1277. DLI_AGC_Threshold_L,
  1278. DLI_AGC_Threshold_default,
  1279. DLI_Shutdown_ON_OFF,
  1280. DLI_Shutdown_Threshold_H,
  1281. DLI_Shutdown_Threshold_L,
  1282. DLI_Shutdown_Threshold_Default,
  1283. DLI_Shutdown_Retry_Count1,
  1284. DLI_Shutdown_Retry_Count2,
  1285. DLI_Shutdown_Retry_Count3,
  1286. DLI_Shutdown_Retry_Count4,
  1287. DLI_AGC_Alarm1,
  1288. DLI_AGC_Alarm2,
  1289. DLI_AGC_Alarm3,
  1290. DLI_AGC_Alarm4,
  1291. DLI_Shutdown_Alarm1,
  1292. DLI_Shutdown_Alarm2,
  1293. DLI_Shutdown_Alarm3,
  1294. DLI_Shutdown_Alarm4,
  1295. ULO_Level_High_Threshold_H,
  1296. ULO_Level_High_Threshold_L,
  1297. ULO_Level_High_Threshold_default,
  1298. BLUECELL_RESERVE22,//ADC3 5
  1299. BLUECELL_RESERVE23,//ADC3 5
  1300. BLUECELL_RESERVE24,//ADC3 6
  1301. BLUECELL_RESERVE25,//ADC3 6
  1302. BLUECELL_RESERVE26,//ADC3 7
  1303. BLUECELL_RESERVE27,//ADC3 7
  1304. BLUECELL_RESERVE28,//ADC3 8
  1305. BLUECELL_RESERVE29,//ADC3 8
  1306. BLUECELL_RESERVE30,//ADC1 4
  1307. BLUECELL_RESERVE31,//ADC1 4
  1308. BLUECELL_RESERVE32,//ADC1 5
  1309. BLUECELL_RESERVE33,//ADC1 5
  1310. BLUECELL_RESERVE34,//ADC1 6
  1311. BLUECELL_RESERVE35,//ADC1 6
  1312. BLUECELL_RESERVE36,//ADC3 4
  1313. BLUECELL_RESERVE37,//ADC3 4
  1314. ULO_Level_High_Alarm1,
  1315. ULO_Level_High_Alarm2,
  1316. ULO_Level_High_Alarm3,
  1317. ULO_Level_High_Alarm4,
  1318. ULO_ALC_Threshold_Default,
  1319. ULO_Shutdown_ON_OFF,
  1320. ULO_Shutdown_Threshold_H,
  1321. ULO_Shutdown_Threshold_L,
  1322. ULO_Shutdown_Threshold_Default,
  1323. ULO_Shutdown_Retry_Count1,
  1324. ULO_Shutdown_Retry_Count2,
  1325. ULO_Shutdown_Retry_Count3,
  1326. ULO_Shutdown_Retry_Count4,
  1327. ULO_ALC_Alarm1,
  1328. ULO_ALC_Alarm2,
  1329. ULO_ALC_Alarm3,
  1330. ULO_ALC_Alarm4,
  1331. ULO_Shutdown_Alarm1,
  1332. ULO_Shutdown_Alarm2,
  1333. ULO_Shutdown_Alarm3,
  1334. ULO_Shutdown_Alarm4,
  1335. Reserve0,
  1336. Reserve1,
  1337. Reserve2,
  1338. Reserve3,
  1339. Reserve4,
  1340. Reserve5,
  1341. bluecell_crc_H,
  1342. bluecell_crc_L,
  1343. bluecell_etx,
  1344. };
  1345. const byte Reqdatastartindex = 4;
  1346. //private delegate void StringSend(object label, String str);
  1347. private void Numeric_Text_Set(object label, String str)
  1348. {
  1349. NumericUpDown Temp_label = (NumericUpDown)label;
  1350. Temp_label.Text = str;
  1351. }
  1352. private void TextBox_Text_Set(object label, String str)
  1353. {
  1354. TextBox Temp_label = (TextBox)label;
  1355. Temp_label.Text = str;
  1356. }
  1357. private void String_Text_Set(object label, String str)
  1358. {
  1359. String Temp_label = (String)label;
  1360. Temp_label = str;
  1361. }
  1362. private void Label_Text_Set(object label, String str)
  1363. {
  1364. Label Temp_label = (Label)label;
  1365. Temp_label.Text = str;
  1366. }
  1367. private void Table_Text_Set(object label, String str)
  1368. {
  1369. label = str;
  1370. }
  1371. private String ComboBox_Text_Get(object data)
  1372. {
  1373. ComboBox Temp_data = (ComboBox)data;
  1374. return Temp_data.Text;
  1375. }
  1376. private void PicVisible_Text_Set(object label, bool set)
  1377. {
  1378. PictureBox Temp_pic = (PictureBox)label;
  1379. Temp_pic.Visible = set;
  1380. }
  1381. private void CheckBoxVisible_Text_Set(object label, bool set)
  1382. {
  1383. CheckBox Temp_pic = (CheckBox) label;
  1384. Temp_pic.Checked = set;
  1385. }
  1386. private Double ADCValueTodBmConvert(DataGridView table,object[] RefData, object[] AdcData, object Currdata)
  1387. {
  1388. /*
  1389. * RefData : Dbm 값
  1390. AdcData : Dbm과 매칭되어있는 ADC값
  1391. Currdata : 현재 ADC 값
  1392. */
  1393. object data = Currdata; // 현재 ADC 값
  1394. double[] Vitual_array = new double[10];
  1395. double step = 0;
  1396. double temp,temp1;
  1397. Double ret = 0xFF,Currentret = 0;
  1398. int LastIndex = 0;
  1399. int dot = 0;
  1400. for(int i = 0; i < table.RowCount; i++)
  1401. {
  1402. try
  1403. {
  1404. step = (Convert.ToDouble(AdcData[i]) - Convert.ToDouble(AdcData[i + 1])) / 10;
  1405. for (int a = 0; a < 10; a++)
  1406. {
  1407. Vitual_array[a] = Convert.ToDouble(AdcData[i]) - (step * a);
  1408. /*현재 ADC 값과 테이블의 ADC값의 모든값들을 마이너스 합 후 */
  1409. Currentret = Convert.ToDouble(Vitual_array[a]) - Convert.ToDouble(data);
  1410. /*만약 0보다 작을 시 절대값을 취해준다.*/
  1411. if (Currentret < 0)
  1412. {
  1413. Currentret = (Currentret * -2) + Currentret;
  1414. }
  1415. /*만약 현재 결과 값이 이전 결과 값보다
  1416. * 작을 경우 그값이 최종 결과 값이다.*/
  1417. if (ret >= Currentret)
  1418. {
  1419. ret = Currentret;
  1420. LastIndex = i;
  1421. dot = a;
  1422. }
  1423. }
  1424. }
  1425. catch { }
  1426. }
  1427. temp = Convert.ToDouble(AdcData[LastIndex]);
  1428. temp1 = Convert.ToDouble(Currdata);
  1429. if (temp1 < temp)
  1430. return Convert.ToDouble(RefData[LastIndex + 1]) + (dot * 0.1);
  1431. else
  1432. return Convert.ToDouble(RefData[0]);
  1433. }
  1434. private double DET_Table_Apply(object label)
  1435. {
  1436. TextBox Temp_TextBox = (TextBox)label;
  1437. double ret = 0;
  1438. switch(Temp_TextBox.Name)
  1439. {
  1440. case "textBox_DET_DL1":
  1441. ret = ADCValueTodBmConvert(dataGridView_TableSetting,DET_DL1_RefTable, DET_DL1_Table, textBox_DET_DL1.Text);
  1442. break;
  1443. case "textBox_DET_DL2":
  1444. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_DL1_RefTable, DET_DL2_Table, textBox_DET_DL2.Text);
  1445. break;
  1446. case "textBox_DET_DL3":
  1447. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_DL1_RefTable, DET_DL3_Table, textBox_DET_DL3.Text);
  1448. break;
  1449. case "textBox_DET_DL4":
  1450. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_DL1_RefTable, DET_DL4_Table, textBox_DET_DL4.Text);
  1451. break;
  1452. case "textBox_DET_UL1":
  1453. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_UL1_RefTable, DET_UL1_Table, textBox_DET_UL1.Text);
  1454. break;
  1455. case "textBox_DET_UL2":
  1456. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_UL2_RefTable, DET_UL2_Table, textBox_DET_UL2.Text);
  1457. break;
  1458. case "textBox_DET_UL3":
  1459. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_UL3_RefTable, DET_UL3_Table, textBox_DET_UL3.Text);
  1460. break;
  1461. case "textBox_DET_UL4":
  1462. ret = ADCValueTodBmConvert(dataGridView_TableSetting, DET_UL4_RefTable, DET_UL4_Table, textBox_DET_UL4.Text);
  1463. break;
  1464. }
  1465. return ret;
  1466. }
  1467. public void GUIDataStatusSet(byte[] buf)
  1468. {
  1469. double Volt_Calc_val = 0.001;//3.3 / 4095;
  1470. double adcdata = 0;
  1471. double dBmdata = 0;
  1472. short LiMitdata = 0;
  1473. if (buf[(int)BluecellReqIndex.Selftest1] == 0)
  1474. {
  1475. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest1_ON, false);// = false;
  1476. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest1_OFF, true);// = false;
  1477. }
  1478. else
  1479. {
  1480. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest1_OFF, false);// = false;
  1481. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest1_ON, true);// = false;
  1482. }
  1483. if (buf[(int)BluecellReqIndex.Selftest2] == 0)
  1484. {
  1485. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest2_ON, false);// = false;
  1486. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest2_OFF, true);// = false;
  1487. }
  1488. else
  1489. {
  1490. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest2_OFF, false);// = false;
  1491. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest2_ON, true);// = false;
  1492. }
  1493. if (buf[(int)BluecellReqIndex.Selftest3] == 0)
  1494. {
  1495. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest3_ON, false);// = false;
  1496. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest3_OFF, true);// = false;
  1497. }
  1498. else
  1499. {
  1500. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest3_OFF, false);// = false;
  1501. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest3_ON, true);// = false;
  1502. }
  1503. if (buf[(int)BluecellReqIndex.Selftest4] == 0)
  1504. {
  1505. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest4_ON, false);// = false;
  1506. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest4_OFF, true);// = false;
  1507. }
  1508. else
  1509. {
  1510. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest4_OFF, false);// = false;
  1511. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_SelfTest4_ON, true);// = false;
  1512. }
  1513. if (buf[(int)BluecellReqIndex.ATT_DL1_PATH] == 0)
  1514. {
  1515. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL1_PATH_ON, false);// = false;
  1516. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL1_PATH_OFF, true);// = false;
  1517. }
  1518. else
  1519. {
  1520. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL1_PATH_OFF, false);// = false;
  1521. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL1_PATH_ON, true);// = false;
  1522. }
  1523. if (buf[(int)BluecellReqIndex.ATT_DL2_PATH] == 0)
  1524. {
  1525. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL2_PATH_ON, false);// = false;
  1526. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL2_PATH_OFF, true);// = false;
  1527. }
  1528. else
  1529. {
  1530. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL2_PATH_OFF, false);// = false;
  1531. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL2_PATH_ON, true);// = false;
  1532. }
  1533. if (buf[(int)BluecellReqIndex.ATT_DL3_PATH] == 0)
  1534. {
  1535. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL3_PATH_ON, false);// = false;
  1536. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL3_PATH_OFF, true);// = false;
  1537. }
  1538. else
  1539. {
  1540. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL3_PATH_OFF, false);// = false;
  1541. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL3_PATH_ON, true);// = false;
  1542. }
  1543. if (buf[(int)BluecellReqIndex.ATT_DL4_PATH] == 0)
  1544. {
  1545. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL4_PATH_ON, false);// = false;
  1546. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL4_PATH_OFF, true);// = false;
  1547. }
  1548. else
  1549. {
  1550. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL4_PATH_OFF, false);// = false;
  1551. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DL4_PATH_ON, true);// = false;
  1552. }
  1553. if (buf[(int)BluecellReqIndex.ATT_UL1_PATH] == 0)
  1554. {
  1555. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL1_PATH_ON, false);// = false;
  1556. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL1_PATH_OFF, true);// = false;
  1557. }
  1558. else
  1559. {
  1560. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL1_PATH_OFF, false);// = false;
  1561. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL1_PATH_ON, true);// = false;
  1562. }
  1563. if (buf[(int)BluecellReqIndex.ATT_UL2_PATH] == 0)
  1564. {
  1565. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL2_PATH_ON, false);// = false;
  1566. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL2_PATH_OFF, true);// = false;
  1567. }
  1568. else
  1569. {
  1570. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL2_PATH_OFF, false);// = false;
  1571. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL2_PATH_ON, true);// = false;
  1572. }
  1573. if (buf[(int)BluecellReqIndex.ATT_UL3_PATH] == 0)
  1574. {
  1575. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL3_PATH_ON, false);// = false;
  1576. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL3_PATH_OFF, true);// = false;
  1577. }
  1578. else
  1579. {
  1580. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL3_PATH_OFF, false);// = false;
  1581. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL3_PATH_ON, true);// = false;
  1582. }
  1583. if (buf[(int)BluecellReqIndex.ATT_UL4_PATH] == 0)
  1584. {
  1585. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL4_PATH_ON, false);// = false;
  1586. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL4_PATH_OFF, true);// = false;
  1587. }
  1588. else
  1589. {
  1590. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL4_PATH_OFF, false);// = false;
  1591. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_UL4_PATH_ON, true);// = false;
  1592. }
  1593. if (buf[(int)BluecellReqIndex.ALARM_MASK1] == 1)
  1594. {
  1595. if (buf[(int)BluecellReqIndex.Temp_High_Alarm] == 0)
  1596. {
  1597. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_ON, false);// = false;
  1598. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_OFF, true);// = false;
  1599. }
  1600. else
  1601. {
  1602. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_ON, true);// = false;
  1603. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_OFF, false);// = false;
  1604. }
  1605. if (buf[(int)BluecellReqIndex.ALARM_DLI_Level] == 0)
  1606. {
  1607. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_ON, false);// = false;
  1608. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_OFF, true);// = false;
  1609. }
  1610. else
  1611. {
  1612. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_OFF, false);// = false;
  1613. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_ON, true);// = false;
  1614. }
  1615. if (buf[(int)BluecellReqIndex.ALARM_DLI_SHTUTDOWN] == 0)
  1616. {
  1617. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_ON, false);// = false;
  1618. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_OFF, true);// = false;
  1619. }
  1620. else
  1621. {
  1622. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_OFF, false);// = false;
  1623. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_ON, true);// = false;
  1624. }
  1625. if (buf[(int)BluecellReqIndex.ALARM_DLI_AGC_Alarm] == 0)
  1626. {
  1627. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_ON, false);// = false;
  1628. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_OFF, true);// = false;
  1629. }
  1630. else
  1631. {
  1632. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_OFF, false);// = false;
  1633. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_ON, true);// = false;
  1634. }
  1635. if (buf[(int)BluecellReqIndex.ALARM_ULO_ALC_Alarm] == 0)
  1636. {
  1637. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_ON, false);// = false;
  1638. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_OFF, true);// = false;
  1639. }
  1640. else
  1641. {
  1642. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_OFF, false);// = false;
  1643. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_ON, true);// = false;
  1644. }
  1645. if (buf[(int)BluecellReqIndex.ALARM_ULO_Level] == 0)
  1646. {
  1647. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_ON, false);// = false;
  1648. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_OFF, true);// = false;
  1649. }
  1650. else
  1651. {
  1652. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_OFF, false);// = false;
  1653. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_ON, true);// = false;
  1654. }
  1655. if (buf[(int)BluecellReqIndex.ALARM_ULO_SHTUTDOWN] == 0)
  1656. {
  1657. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_ON, false);// = false;
  1658. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_OFF, true);// = false;
  1659. }
  1660. else
  1661. {
  1662. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_OFF, false);// = false;
  1663. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_ON, true);// = false;
  1664. }
  1665. }
  1666. else
  1667. {
  1668. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_ON, false);// = false;
  1669. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_TempHigh_Alarm_OFF, true);// = false;
  1670. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_OFF, true);// = false;
  1671. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLShutdown_Alarm_ON, false);// = false;
  1672. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_OFF, true);// = false;
  1673. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC_Alarm_ON, false);// = false;
  1674. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_OFF, true);// = false;
  1675. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC_Alarm_ON, false);// = false;
  1676. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_OFF, true);// = false;
  1677. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULOLevel_Alarm_ON, false);// = false;
  1678. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_OFF, true);// = false;
  1679. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_DLILevel_Alarm_ON, false);// = false;
  1680. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_OFF, true);// = false;
  1681. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ULShutdown_Alarm_ON, false);// = false;
  1682. }
  1683. this.Invoke(new SWVisible(CheckBoxVisible_Text_Set), checkBox_Fix, IamSetting_Get());// = false;
  1684. if (IamSetting_Get() == false)
  1685. {
  1686. LiMitdata = 0;
  1687. LiMitdata += buf[(int)BluecellReqIndex.Temp_High_Threshold];
  1688. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_Temp_Threshold, LiMitdata.ToString());
  1689. LiMitdata = 0;
  1690. LiMitdata += buf[(int)BluecellReqIndex.Temp_High_Threshold_Default];
  1691. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_Temp_Threshold_Default, LiMitdata.ToString("N2"));
  1692. LiMitdata = 0;
  1693. LiMitdata += buf[(int)BluecellReqIndex.bluecell_User_TEMP_OFFSET];
  1694. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_Temperature_Offset, LiMitdata.ToString());
  1695. LiMitdata = 0;
  1696. LiMitdata += buf[(int)BluecellReqIndex.ALARM_MASK1];
  1697. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_MASK, LiMitdata.ToString());
  1698. LiMitdata = 0;
  1699. LiMitdata += (short)((buf[(int)BluecellReqIndex.DLI_AGC_Threshold_H] << 8) & 0xFF00);
  1700. LiMitdata += (short)(buf[(int)BluecellReqIndex.DLI_AGC_Threshold_L] & 0x00FF);
  1701. LiMitdata /= 10;
  1702. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_DLI_AGC_Threshold, LiMitdata.ToString());
  1703. LiMitdata = 0;
  1704. LiMitdata += (short)((buf[(int)BluecellReqIndex.ULO_ALC_Threshold_H] << 8) & 0xFF00);
  1705. LiMitdata += (short)(buf[(int)BluecellReqIndex.ULO_ALC_Threshold_L] & 0x00FF);
  1706. LiMitdata /= 10;
  1707. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ULO_ALC_Threshold, LiMitdata.ToString("N2"));
  1708. adcdata += ((buf[(int)BluecellReqIndex.ATT_DL1_H] << 8) & 0xFF00);
  1709. adcdata += (buf[(int)BluecellReqIndex.ATT_DL1_L] & 0x00FF);
  1710. adcdata /= 10;
  1711. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_DL1, adcdata.ToString("N2"));
  1712. adcdata = 0;
  1713. adcdata += ((buf[(int)BluecellReqIndex.ATT_DL2_H] << 8) & 0xFF00);
  1714. adcdata += (buf[(int)BluecellReqIndex.ATT_DL2_L] & 0x00FF);
  1715. adcdata /= 10;
  1716. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_DL2, adcdata.ToString("N2"));
  1717. adcdata = 0;
  1718. adcdata += ((buf[(int)BluecellReqIndex.ATT_DL3_H] << 8) & 0xFF00);
  1719. adcdata += (buf[(int)BluecellReqIndex.ATT_DL3_L] & 0x00FF);
  1720. adcdata /= 10;
  1721. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_DL3, adcdata.ToString("N2"));
  1722. adcdata = 0;
  1723. adcdata += ((buf[(int)BluecellReqIndex.ATT_DL4_H] << 8) & 0xFF00);
  1724. adcdata += (buf[(int)BluecellReqIndex.ATT_DL4_L] & 0x00FF);
  1725. adcdata /= 10;
  1726. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_DL4, adcdata.ToString("N2"));
  1727. adcdata = 0;
  1728. adcdata += ((buf[(int)BluecellReqIndex.ATT_UL1_H] << 8) & 0xFF00);
  1729. adcdata += (buf[(int)BluecellReqIndex.ATT_UL1_L] & 0x00FF);
  1730. adcdata /= 10;
  1731. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_UL1, adcdata.ToString("N2"));
  1732. adcdata = 0;
  1733. adcdata += ((buf[(int)BluecellReqIndex.ATT_UL2_H] << 8) & 0xFF00);
  1734. adcdata += (buf[(int)BluecellReqIndex.ATT_UL2_L] & 0x00FF);
  1735. adcdata /= 10;
  1736. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_UL2, adcdata.ToString("N2"));
  1737. adcdata = 0;
  1738. adcdata += ((buf[(int)BluecellReqIndex.ATT_UL3_H] << 8) & 0xFF00);
  1739. adcdata += (buf[(int)BluecellReqIndex.ATT_UL3_L] & 0x00FF);
  1740. adcdata /= 10;
  1741. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_UL3, adcdata.ToString("N2"));
  1742. adcdata = 0;
  1743. adcdata += ((buf[(int)BluecellReqIndex.ATT_UL4_H] << 8) & 0xFF00);
  1744. adcdata += (buf[(int)BluecellReqIndex.ATT_UL4_L] & 0x00FF);
  1745. adcdata /= 10;
  1746. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ATT_UL4, adcdata.ToString("N2"));
  1747. adcdata = 0;
  1748. //this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_ALC4_MAX, adcdata.ToString("N2"));
  1749. adcdata = 0;
  1750. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_DL1_H] << 8) & 0xFF00);
  1751. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_DL1_L] & 0x00FF);
  1752. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1753. {
  1754. adcdata = (0xffff - adcdata) + 1;
  1755. adcdata *= -1;
  1756. }
  1757. adcdata /= 10;
  1758. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_DL1_User, adcdata.ToString("N2"));
  1759. adcdata = 0;
  1760. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_DL2_H] << 8) & 0xFF00);
  1761. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_DL2_L] & 0x00FF);
  1762. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1763. {
  1764. adcdata = (0xffff - adcdata) + 1;
  1765. adcdata *= -1;
  1766. }
  1767. adcdata /= 10;
  1768. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_DL2_User, adcdata.ToString("N2"));
  1769. adcdata = 0;
  1770. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_DL3_H] << 8) & 0xFF00);
  1771. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_DL3_L] & 0x00FF);
  1772. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1773. {
  1774. adcdata = (0xffff - adcdata) + 1;
  1775. adcdata *= -1;
  1776. }
  1777. adcdata /= 10;
  1778. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_DL3_User, adcdata.ToString("N2"));
  1779. adcdata = 0;
  1780. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_DL4_H] << 8) & 0xFF00);
  1781. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_DL4_L] & 0x00FF);
  1782. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1783. {
  1784. adcdata = (0xffff - adcdata) + 1;
  1785. adcdata *= -1;
  1786. }
  1787. adcdata /= 10;
  1788. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_DL4_User, adcdata.ToString("N2"));
  1789. adcdata = 0;
  1790. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_UL1_H] << 8) & 0xFF00);
  1791. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_UL1_L] & 0x00FF);
  1792. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1793. {
  1794. adcdata = (0xffff - adcdata) + 1;
  1795. adcdata *= -1;
  1796. }
  1797. adcdata /= 10;
  1798. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_UL1_User, adcdata.ToString("N2"));
  1799. adcdata = 0;
  1800. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_UL2_H] << 8) & 0xFF00);
  1801. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_UL2_L] & 0x00FF);
  1802. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1803. {
  1804. adcdata = (0xffff - adcdata) + 1;
  1805. adcdata *= -1;
  1806. }
  1807. adcdata /= 10;
  1808. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_UL2_User, adcdata.ToString("N2"));
  1809. adcdata = 0;
  1810. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_UL3_H] << 8) & 0xFF00);
  1811. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_UL3_L] & 0x00FF);
  1812. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1813. {
  1814. adcdata = (0xffff - adcdata) + 1;
  1815. adcdata *= -1;
  1816. }
  1817. adcdata /= 10;
  1818. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_UL3_User, adcdata.ToString("N2"));
  1819. adcdata = 0;
  1820. adcdata += ((buf[(int)BluecellReqIndex.bluecell_User_UL4_H] << 8) & 0xFF00);
  1821. adcdata += (buf[(int)BluecellReqIndex.bluecell_User_UL4_L] & 0x00FF);
  1822. if ((((int)(adcdata) & 0xFF00) & 0xF000) == 0xF000)
  1823. {
  1824. adcdata = (0xffff - adcdata) + 1;
  1825. adcdata *= -1;
  1826. }
  1827. adcdata /= 10;
  1828. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_UL4_User, adcdata.ToString("N2"));
  1829. adcdata = 0;
  1830. }
  1831. adcdata = 0;
  1832. adcdata = ((buf[(int)BluecellReqIndex.DLI_Level1_H] << 8) & 0xFF00);
  1833. adcdata += (buf[(int)BluecellReqIndex.DLI_Level1_L] & 0x00FF);
  1834. adcdata *= Volt_Calc_val;
  1835. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL1, adcdata.ToString("N3"));
  1836. dBmdata = DET_Table_Apply(textBox_DET_DL1);
  1837. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL1_dBm, dBmdata.ToString("N3"));
  1838. //this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL1_dBm, adcdata.ToString("N2"));
  1839. adcdata = 0;
  1840. adcdata = ((buf[(int)BluecellReqIndex.DLI_Level2_H] << 8) & 0xFF00);
  1841. adcdata += (buf[(int)BluecellReqIndex.DLI_Level2_L] & 0x00FF);
  1842. adcdata *= Volt_Calc_val;
  1843. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL2, adcdata.ToString("N3"));
  1844. dBmdata = DET_Table_Apply(textBox_DET_DL2);
  1845. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL2_dBm, dBmdata.ToString("N3"));
  1846. adcdata = 0;
  1847. adcdata = ((buf[(int)BluecellReqIndex.DLI_Level3_H] << 8) & 0xFF00);
  1848. adcdata += (buf[(int)BluecellReqIndex.DLI_Level3_L] & 0x00FF);
  1849. adcdata *= Volt_Calc_val;
  1850. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL3, adcdata.ToString("N3"));
  1851. dBmdata = DET_Table_Apply(textBox_DET_DL3);
  1852. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL3_dBm, dBmdata.ToString("N3"));
  1853. adcdata = 0;
  1854. adcdata = ((buf[(int)BluecellReqIndex.DLI_Level4_H] << 8) & 0xFF00);
  1855. adcdata += (buf[(int)BluecellReqIndex.DLI_Level4_L] & 0x00FF);
  1856. adcdata *= Volt_Calc_val;
  1857. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL4, adcdata.ToString("N3"));
  1858. dBmdata = DET_Table_Apply(textBox_DET_DL4);
  1859. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_DL4_dBm, dBmdata.ToString("N3"));
  1860. adcdata = 0;
  1861. adcdata = ((buf[(int)BluecellReqIndex.ULO_Level1_H] << 8) & 0xFF00);
  1862. adcdata += (buf[(int)BluecellReqIndex.ULO_Level1_L] & 0x00FF);
  1863. adcdata *= Volt_Calc_val;
  1864. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL1, adcdata.ToString("N3"));
  1865. dBmdata = DET_Table_Apply(textBox_DET_UL1);
  1866. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL1_dBm, dBmdata.ToString("N3"));
  1867. adcdata = 0;
  1868. adcdata = ((buf[(int)BluecellReqIndex.ULO_Level2_H] << 8) & 0xFF00);
  1869. adcdata += (buf[(int)BluecellReqIndex.ULO_Level2_L] & 0x00FF);
  1870. adcdata *= Volt_Calc_val;
  1871. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL2, adcdata.ToString("N3"));
  1872. dBmdata = DET_Table_Apply(textBox_DET_UL2);
  1873. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL2_dBm, dBmdata.ToString("N3"));
  1874. adcdata = 0;
  1875. adcdata = ((buf[(int)BluecellReqIndex.ULO_Level3_H] << 8) & 0xFF00);
  1876. adcdata += (buf[(int)BluecellReqIndex.ULO_Level3_L] & 0x00FF);
  1877. adcdata *= Volt_Calc_val;
  1878. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL3, adcdata.ToString("N3"));
  1879. dBmdata = DET_Table_Apply(textBox_DET_UL3);
  1880. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL3_dBm, dBmdata.ToString("N3"));
  1881. adcdata = 0;
  1882. adcdata = ((buf[(int)BluecellReqIndex.ULO_Level4_H] << 8) & 0xFF00);
  1883. adcdata += (buf[(int)BluecellReqIndex.ULO_Level4_L] & 0x00FF);
  1884. adcdata *= Volt_Calc_val;
  1885. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL4, adcdata.ToString("N3"));
  1886. dBmdata = DET_Table_Apply(textBox_DET_UL4);
  1887. this.Invoke(new StringSend(TextBox_Text_Set), textBox_DET_UL4_dBm, dBmdata.ToString("N3"));
  1888. adcdata = 0;
  1889. #if false
  1890. adcdata += ((buf[(int)BluecellReqIndex.DET_TEMP_H] << 8) & 0xFF00);
  1891. adcdata += (buf[(int)BluecellReqIndex.DET_TEMP_L] & 0x00FF);
  1892. adcdata = adcdata * 3.3 / 4095;
  1893. adcdata = (adcdata - 0.5) * 100;
  1894. #else
  1895. adcdata = (buf[(int)BluecellReqIndex.DET_TEMP]);
  1896. #endif
  1897. this.Invoke(new StringSend(Label_Text_Set), label_Temp, adcdata.ToString("N2") + "°C");
  1898. adcdata = 0;
  1899. if (buf[(int)BluecellReqIndex.DLI_AGC_ON_OFF] == 0)
  1900. {
  1901. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC1_ON, false);// = false;
  1902. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC1_OFF, true);// = false;
  1903. }
  1904. else
  1905. {
  1906. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC1_OFF, false);// = false;
  1907. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_AGC1_ON, true);// = false;
  1908. }
  1909. if (buf[(int)BluecellReqIndex.ULO_ALC_ON_OFF] == 0)
  1910. {
  1911. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC1_ON, false);// = false;
  1912. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC1_OFF, true);// = false;
  1913. }
  1914. else
  1915. {
  1916. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC1_OFF, false);// = false;
  1917. this.Invoke(new SWVisible(PicVisible_Text_Set), pictureBox_ALC1_ON, true);// = false;
  1918. }
  1919. TableCurrentOutputSetting();
  1920. }
  1921. private void TableCurrentOutputSetting()
  1922. {
  1923. ComboBox comboBox = (ComboBox)comboBox_TableName;
  1924. CheckForIllegalCrossThreadCalls = false;
  1925. string tempstr = comboBox_TableName.Text;
  1926. //this.Invoke(new StringSend(String_Text_Set), tempstr, );
  1927. switch (tempstr)
  1928. {
  1929. case "DET_DL1":
  1930. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_DL1.Text);
  1931. break;
  1932. case "DET_DL2":
  1933. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_DL2.Text);
  1934. break;
  1935. case "DET_DL3":
  1936. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_DL3.Text);
  1937. break;
  1938. case "DET_DL4":
  1939. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_DL4.Text);
  1940. break;
  1941. case "DET_UL1":
  1942. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_UL1.Text);
  1943. break;
  1944. case "DET_UL2":
  1945. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_UL2.Text);
  1946. break;
  1947. case "DET_UL3":
  1948. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_UL3.Text);
  1949. break;
  1950. case "DET_UL4":
  1951. this.Invoke(new StringSend(Numeric_Text_Set), numericUpDown_CurrentOutput, textBox_DET_UL4.Text);
  1952. break;
  1953. default:
  1954. //MessageBox.Show("존재하지 않는 ComboBox 입니다.\r\n 확인해주세요.");
  1955. break;
  1956. }
  1957. }
  1958. object[] DET_DL1_Table = new object[128];
  1959. object[] DET_DL2_Table = new object[128];
  1960. object[] DET_DL3_Table = new object[128];
  1961. object[] DET_DL4_Table = new object[128];
  1962. object[] DET_UL1_Table = new object[128];
  1963. object[] DET_UL2_Table = new object[128];
  1964. object[] DET_UL3_Table = new object[128];
  1965. object[] DET_UL4_Table = new object[128];
  1966. object[] DET_DL1_RefTable = new object[128];
  1967. object[] DET_DL2_RefTable = new object[128];
  1968. object[] DET_DL3_RefTable = new object[128];
  1969. object[] DET_DL4_RefTable = new object[128];
  1970. object[] DET_UL1_RefTable = new object[128];
  1971. object[] DET_UL2_RefTable = new object[128];
  1972. object[] DET_UL3_RefTable = new object[128];
  1973. object[] DET_UL4_RefTable = new object[128];
  1974. private void DET_TableSetting(object Valueref,object Value,int index)
  1975. {
  1976. ComboBox comboBox = (ComboBox)comboBox_TableName;
  1977. CheckForIllegalCrossThreadCalls = false;
  1978. string tempstr = comboBox_TableName.Text;
  1979. string Valuerefstr = "";
  1980. Valuerefstr = Convert.ToString(Valueref);
  1981. Valuerefstr = Valuerefstr.Replace(" dBm", "");
  1982. Valueref = Valuerefstr;
  1983. //this.Invoke(new StringSend(String_Text_Set), tempstr, );
  1984. switch (tempstr)
  1985. {
  1986. case "DET_DL1":
  1987. DET_DL1_Table[index] = Value;
  1988. DET_DL1_RefTable[index] = Valueref;
  1989. break;
  1990. case "DET_DL2":
  1991. DET_DL2_Table[index] = Value;
  1992. DET_DL2_RefTable[index] = Valueref;
  1993. break;
  1994. case "DET_DL3":
  1995. DET_DL3_Table[index] = Value;
  1996. DET_DL3_RefTable[index] = Valueref;
  1997. break;
  1998. case "DET_DL4":
  1999. DET_DL4_Table[index] = Value;
  2000. DET_DL4_RefTable[index] = Valueref;
  2001. break;
  2002. case "DET_UL1":
  2003. DET_UL1_Table[index] = Value;
  2004. DET_UL1_RefTable[index] = Valueref;
  2005. break;
  2006. case "DET_UL2":
  2007. DET_UL2_Table[index] = Value;
  2008. DET_UL2_RefTable[index] = Valueref;
  2009. break;
  2010. case "DET_UL3":
  2011. DET_UL3_Table[index] = Value;
  2012. DET_UL3_RefTable[index] = Valueref;
  2013. break;
  2014. case "DET_UL4":
  2015. DET_UL4_Table[index] = Value;
  2016. DET_UL4_RefTable[index] = Valueref;
  2017. break;
  2018. default:
  2019. //MessageBox.Show("존재하지 않는 ComboBox 입니다.\r\n 확인해주세요.");
  2020. break;
  2021. }
  2022. }
  2023. public void TableDataStatusSet(byte[] buf)
  2024. {
  2025. #if true
  2026. Int16 TableValue = 0;
  2027. double ret = 0;
  2028. sbyte tempdata = 0;
  2029. string data = Convert.ToString(this.Invoke(new Stringreturn(ComboBox_Text_Get), comboBox_TableName));
  2030. bool Det_Att_Set = false;
  2031. byte datalen_div = 2;
  2032. if (data.Contains("DET") == true)
  2033. {
  2034. Det_Att_Set = false;
  2035. datalen_div = 2;
  2036. }
  2037. else
  2038. {
  2039. Det_Att_Set = true;
  2040. datalen_div = 1;
  2041. }
  2042. for (int i = 0; i < (buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] - 4)/ datalen_div; i++) {
  2043. if(Det_Att_Set == false)
  2044. {
  2045. TableValue = buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1 )+ i * 2];
  2046. TableValue <<= 8;
  2047. TableValue += buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + i * 2 + 1];
  2048. ret = Convert.ToDouble(TableValue) / 1000;
  2049. }
  2050. else
  2051. {
  2052. tempdata =(SByte)((buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + i]));//Convert.ToSByte((buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + i]));
  2053. ret = Convert.ToDouble(tempdata) / 2;
  2054. }
  2055. try
  2056. {
  2057. dataGridView_TableSetting[1, i].Value = ret.ToString("N3");
  2058. DET_TableSetting(dataGridView_TableSetting[0, i].Value, dataGridView_TableSetting[1, i].Value, i);
  2059. }
  2060. catch { }
  2061. //this.Invoke(new StringSend(Table_Text_Set), dataGridView_TableSetting[1, i].Value, TableValue.ToString("N2"));
  2062. }
  2063. /*dataGridView_TableSetting[1, i].Value
  2064. this.Invoke(new StringSend(Table_Text_Set), dataGridView_TableSetting, adcdata.ToString("N2"));*/
  2065. #endif
  2066. }
  2067. public void DateLabelInputFunc(string date)
  2068. {
  2069. this.Invoke(new StringSend(Label_Text_Set), label_CompileDate, date);
  2070. }
  2071. private void ATT_Enter(object sender, KeyEventArgs e)
  2072. {
  2073. if (e.KeyCode == Keys.Enter)
  2074. {
  2075. //button_ATT_Click_1(sender, null);
  2076. button_ATT_Click_2(sender, null);
  2077. //to do
  2078. }
  2079. else if(e.KeyCode == Keys.Escape)
  2080. {
  2081. Activi_Change__Setting(null,null);
  2082. }
  2083. else
  2084. {
  2085. return;
  2086. }
  2087. }
  2088. private bool IamSetting = false;
  2089. private void Activi_Change__SettingComplete(object sender, EventArgs e)
  2090. {
  2091. IamSetting = true;
  2092. }
  2093. private void Activi_Change__Setting(object sender, EventArgs e)
  2094. {
  2095. IamSetting = false;
  2096. }
  2097. public bool IamSetting_Get()
  2098. {
  2099. return IamSetting;
  2100. }
  2101. private void checkBox_Fix_CheckedChanged(object sender, EventArgs e)
  2102. {
  2103. }
  2104. const byte DET_TableMaxLength = 128 + 6; // Header + Type + Length + CRCINDEX + TableIndex + ..... + CRC
  2105. const byte ATT_TableMaxLength = 64 + 6; // Header + Type + Length + CRCINDEX + TableIndex + ..... + CRC
  2106. private void button_FileSave_Click(object sender, EventArgs e)
  2107. {
  2108. byte[] temp_buf = new byte[DET_TableMaxLength];
  2109. string tempstr;
  2110. Int16 detret;
  2111. byte tmp_h, tmp_l, attret;
  2112. try
  2113. {
  2114. ComboBox cb = (ComboBox)comboBox_TableName;
  2115. tempstr = cb.Text;
  2116. }
  2117. catch { tempstr = comboBox_TableName.Text; }
  2118. byte type = 0;
  2119. switch (tempstr)
  2120. {
  2121. case "ATT_DL1": type = (byte)MBIC_TableNumber.DLI_P1_ATT_Accuracy_Table_Number; break;
  2122. case "ATT_DL2": type = (byte)MBIC_TableNumber.DLI_P2_ATT_Accuracy_Table_Number; break;
  2123. case "ATT_DL3": type = (byte)MBIC_TableNumber.DLI_P3_ATT_Accuracy_Table_Number; break;
  2124. case "ATT_DL4": type = (byte)MBIC_TableNumber.DLI_P4_ATT_Accuracy_Table_Number; break;
  2125. case "ATT_UL1": type = (byte)MBIC_TableNumber.ULO_P1_ATT_Accuracy_Table_Number; break;
  2126. case "ATT_UL2": type = (byte)MBIC_TableNumber.ULO_P2_ATT_Accuracy_Table_Number; break;
  2127. case "ATT_UL3": type = (byte)MBIC_TableNumber.ULO_P3_ATT_Accuracy_Table_Number; break;
  2128. case "ATT_UL4": type = (byte)MBIC_TableNumber.ULO_P4_ATT_Accuracy_Table_Number; break;
  2129. case "DET_DL1": type = (byte)MBIC_TableNumber.DLI_P1_Level_Table_Number; break;
  2130. case "DET_DL2": type = (byte)MBIC_TableNumber.DLI_P2_Level_Table_Number; break;
  2131. case "DET_DL3": type = (byte)MBIC_TableNumber.DLI_P3_Level_Table_Number; break;
  2132. case "DET_DL4": type = (byte)MBIC_TableNumber.DLI_P4_Level_Table_Number; break;
  2133. case "DET_UL1": type = (byte)MBIC_TableNumber.ULO_P1_Level_Table_Number; break;
  2134. case "DET_UL2": type = (byte)MBIC_TableNumber.ULO_P2_Level_Table_Number; break;
  2135. case "DET_UL3": type = (byte)MBIC_TableNumber.ULO_P3_Level_Table_Number; break;
  2136. case "DET_UL4": type = (byte)MBIC_TableNumber.ULO_P4_Level_Table_Number; break;
  2137. case "TEMP_DL1": type = (byte)MBIC_TableNumber.DLI_P1_ATT_Temp_guarantee_Table_Number; break;
  2138. case "TEMP_DL2": type = (byte)MBIC_TableNumber.DLI_P2_ATT_Temp_guarantee_Table_Number; break;
  2139. case "TEMP_DL3": type = (byte)MBIC_TableNumber.DLI_P3_ATT_Temp_guarantee_Table_Number; break;
  2140. case "TEMP_DL4": type = (byte)MBIC_TableNumber.DLI_P4_ATT_Temp_guarantee_Table_Number; break;
  2141. case "TEMP_UL1": type = (byte)MBIC_TableNumber.ULO_P1_ATT_Temp_guarantee_Table_Number; break;
  2142. case "TEMP_UL2": type = (byte)MBIC_TableNumber.ULO_P2_ATT_Temp_guarantee_Table_Number; break;
  2143. case "TEMP_UL3": type = (byte)MBIC_TableNumber.ULO_P3_ATT_Temp_guarantee_Table_Number; break;
  2144. case "TEMP_UL4": type = (byte)MBIC_TableNumber.ULO_P4_ATT_Temp_guarantee_Table_Number; break;
  2145. default:
  2146. MessageBox.Show("존재하지 않는 ComboBox 입니다.\r\n 확인해주세요.");
  2147. break;
  2148. }
  2149. //temp_buf[] = dataGridView_TableSetting.Rows[r - 1].Cells[1].Value
  2150. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2151. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = (byte)Bluecell_BootProtocol.DATATYPE.ATT_TableSet;
  2152. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = DET_TableMaxLength - 2;
  2153. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = DET_TableMaxLength - 2;
  2154. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = (byte)type;
  2155. if (comboBox_TableName.Text.Contains("DET") == true)
  2156. {
  2157. for (int i = 0; i < dataGridView_TableSetting.RowCount; i++)
  2158. {
  2159. detret = Convert.ToInt16(Convert.ToDouble(dataGridView_TableSetting[1, i].Value) * 1000);
  2160. tmp_h = Convert.ToByte((detret & 0xFF00) >> 8);
  2161. tmp_l = Convert.ToByte((detret & 0x00FF));
  2162. temp_buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + i * 2] = tmp_h;
  2163. temp_buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + (i * 2) + 1] = tmp_l;
  2164. }
  2165. serial.Serial_DataSend(temp_buf, DET_TableMaxLength);
  2166. }
  2167. else
  2168. {
  2169. for (int i = 0; i < dataGridView_TableSetting.RowCount; i++)
  2170. {
  2171. attret = Convert.ToByte(Convert.ToSByte(Convert.ToDouble(dataGridView_TableSetting[1, i].Value) * 2) & 0xFF);
  2172. temp_buf[(int)(Bluecell_ProtIndex_p.Bluecell_data + 1) + i] = (attret);
  2173. }
  2174. serial.Serial_DataSend(temp_buf, ATT_TableMaxLength);
  2175. }
  2176. ReqTimer_Cnt = 0;
  2177. }
  2178. const byte TableGetMaxLength = 1 + 6;
  2179. private void button_FileLoad_Click(object sender, EventArgs e)
  2180. {
  2181. byte[] temp_buf = new byte[TableGetMaxLength];
  2182. string tempstr;
  2183. try
  2184. {
  2185. ComboBox cb = (ComboBox)sender;
  2186. tempstr = cb.Text;
  2187. }
  2188. catch { tempstr = comboBox_TableName.Text; }
  2189. byte type = 0;
  2190. switch (tempstr)
  2191. {
  2192. case "ATT_DL1": type = (byte)MBIC_TableNumber.DLI_P1_ATT_Accuracy_Table_Number; break;
  2193. case "ATT_DL2": type = (byte)MBIC_TableNumber.DLI_P2_ATT_Accuracy_Table_Number; break;
  2194. case "ATT_DL3": type = (byte)MBIC_TableNumber.DLI_P3_ATT_Accuracy_Table_Number; break;
  2195. case "ATT_DL4": type = (byte)MBIC_TableNumber.DLI_P4_ATT_Accuracy_Table_Number; break;
  2196. case "ATT_UL1": type = (byte)MBIC_TableNumber.ULO_P1_ATT_Accuracy_Table_Number; break;
  2197. case "ATT_UL2": type = (byte)MBIC_TableNumber.ULO_P2_ATT_Accuracy_Table_Number; break;
  2198. case "ATT_UL3": type = (byte)MBIC_TableNumber.ULO_P3_ATT_Accuracy_Table_Number; break;
  2199. case "ATT_UL4": type = (byte)MBIC_TableNumber.ULO_P4_ATT_Accuracy_Table_Number; break;
  2200. case "DET_DL1": type = (byte)MBIC_TableNumber.DLI_P1_Level_Table_Number; break;
  2201. case "DET_DL2": type = (byte)MBIC_TableNumber.DLI_P2_Level_Table_Number; break;
  2202. case "DET_DL3": type = (byte)MBIC_TableNumber.DLI_P3_Level_Table_Number; break;
  2203. case "DET_DL4": type = (byte)MBIC_TableNumber.DLI_P4_Level_Table_Number; break;
  2204. case "DET_UL1": type = (byte)MBIC_TableNumber.ULO_P1_Level_Table_Number; break;
  2205. case "DET_UL2": type = (byte)MBIC_TableNumber.ULO_P2_Level_Table_Number; break;
  2206. case "DET_UL3": type = (byte)MBIC_TableNumber.ULO_P3_Level_Table_Number; break;
  2207. case "DET_UL4": type = (byte)MBIC_TableNumber.ULO_P4_Level_Table_Number; break;
  2208. case "TEMP_DL1": type = (byte)MBIC_TableNumber.DLI_P1_ATT_Temp_guarantee_Table_Number; break;
  2209. case "TEMP_DL2": type = (byte)MBIC_TableNumber.DLI_P2_ATT_Temp_guarantee_Table_Number; break;
  2210. case "TEMP_DL3": type = (byte)MBIC_TableNumber.DLI_P3_ATT_Temp_guarantee_Table_Number; break;
  2211. case "TEMP_DL4": type = (byte)MBIC_TableNumber.DLI_P4_ATT_Temp_guarantee_Table_Number; break;
  2212. case "TEMP_UL1": type = (byte)MBIC_TableNumber.ULO_P1_ATT_Temp_guarantee_Table_Number; break;
  2213. case "TEMP_UL2": type = (byte)MBIC_TableNumber.ULO_P2_ATT_Temp_guarantee_Table_Number; break;
  2214. case "TEMP_UL3": type = (byte)MBIC_TableNumber.ULO_P3_ATT_Temp_guarantee_Table_Number; break;
  2215. case "TEMP_UL4": type = (byte)MBIC_TableNumber.ULO_P4_ATT_Temp_guarantee_Table_Number; break;
  2216. default:
  2217. MessageBox.Show("존재하지 않는 ComboBox 입니다.\r\n 확인해주세요.");
  2218. break;
  2219. }
  2220. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2221. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = (byte)Bluecell_BootProtocol.DATATYPE.ATT_TableGet;
  2222. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = TableGetMaxLength - 2;
  2223. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = TableGetMaxLength - 2;
  2224. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = type;
  2225. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  2226. ReqTimer_Cnt = 0;
  2227. }
  2228. private void button_Save_Click(object sender, EventArgs e)
  2229. {
  2230. byte[] temp_buf = new byte[TableGetMaxLength];
  2231. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2232. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_StatusSave;
  2233. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = TableGetMaxLength - 2;
  2234. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = TableGetMaxLength - 2;
  2235. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = (byte)1;
  2236. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  2237. ReqTimer_Cnt = 0;
  2238. }
  2239. private void numericUpDown_User_KeyDown(object sender, KeyEventArgs e)
  2240. {
  2241. NumericUpDown numeric = (NumericUpDown)sender;
  2242. const byte TableGetMaxLength = 8;
  2243. byte tmp_H = 0;
  2244. byte tmp_L = 0;
  2245. if (e.KeyCode == Keys.Enter)
  2246. {
  2247. byte[] temp_buf = new byte[TableGetMaxLength];
  2248. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2249. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = TableGetMaxLength - 3;
  2250. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = TableGetMaxLength - 2;
  2251. if ( numeric.Name == "numericUpDown_Temp_Threshold"
  2252. || numeric.Name == "numericUpDown_Temp_Threshold_Default"
  2253. || numeric.Name == "numericUpDown_Temperature_Offset"
  2254. || numeric.Name.Contains("Default") == true)
  2255. {
  2256. Int16 UserData = Convert.ToInt16(numeric.Value);
  2257. //tmp_H = Convert.ToByte((UserData & 0xFF00) >> 8);
  2258. tmp_L = Convert.ToByte((UserData & 0x00FF));
  2259. //temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = tmp_H;
  2260. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = tmp_L;
  2261. }
  2262. else
  2263. {
  2264. Int16 UserData = Convert.ToInt16(numeric.Value * 10);
  2265. tmp_H = Convert.ToByte((UserData & 0xFF00) >> 8);
  2266. tmp_L = Convert.ToByte((UserData & 0x00FF));
  2267. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = tmp_H;
  2268. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 1] = tmp_L;
  2269. }
  2270. switch (numeric.Name)
  2271. {
  2272. case "numericUpDown_Temp_Threshold":
  2273. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2274. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_Temp_High_Threshold;
  2275. break;
  2276. case "numericUpDown_Temp_Threshold_Default":
  2277. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2278. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_Temp_High_Threshold_Default;
  2279. break;
  2280. case "numericUpDown_Temperature_Offset":
  2281. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2282. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_Temperature_Offset;
  2283. break;
  2284. case "numericUpDown_DL1_User":
  2285. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2286. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DL1_USER;
  2287. break;
  2288. case "numericUpDown_DL2_User":
  2289. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2290. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DL2_USER;
  2291. break;
  2292. case "numericUpDown_DL3_User":
  2293. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2294. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DL3_USER;
  2295. break;
  2296. case "numericUpDown_DL4_User":
  2297. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2298. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DL4_USER;
  2299. break;
  2300. case "numericUpDown_UL1_User":
  2301. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2302. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_UL1_USER;
  2303. break;
  2304. case "numericUpDown_UL2_User":
  2305. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2306. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_UL2_USER;
  2307. break;
  2308. case "numericUpDown_UL3_User":
  2309. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2310. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_UL3_USER;
  2311. break;
  2312. case "numericUpDown_UL4_User":
  2313. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2314. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_UL4_USER;
  2315. break;
  2316. case "numericUpDown_TEMP_User":
  2317. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2318. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_TEMP_USER;
  2319. break;
  2320. case "numericUpDown_DLI_Level_High_Threshold":
  2321. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2322. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Level_High_Threshold;
  2323. break;
  2324. case "numericUpDown_DLI_Level_Low_Threshold":
  2325. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2326. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Level_Low_Threshold;
  2327. break;
  2328. case "numericUpDown_DLI_Level_High_Low_Threshold_default":
  2329. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2330. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Level_High_Low_Threshold_default;
  2331. break;
  2332. case "numericUpDown_DLI_AGC_Threshold":
  2333. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2334. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_AGC_Threshold;
  2335. break;
  2336. case "numericUpDown_DLI_AGC_Threshold_Default":
  2337. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2338. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_AGC_Threshold_Default;
  2339. break;
  2340. case "numericUpDown_DLI_Shutdown_Threshold":
  2341. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2342. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Shutdown_Threshold;
  2343. break;
  2344. case "numericUpDown_DLI_Shutdown_Threshold_Default":
  2345. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2346. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Shutdown_Threshold_Default;
  2347. break;
  2348. case "numericUpDown_ULO_Level_High_Threshold":
  2349. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2350. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ULO_Level_High_Threshold;
  2351. break;
  2352. case "numericUpDown_DLI_Level_High_Threshold_default":
  2353. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2354. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_DLI_Level_High_Low_Threshold_default;
  2355. break;
  2356. case "numericUpDown_ULO_ALC_Threshold":
  2357. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2358. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ULO_ALC_Threshold;
  2359. break;
  2360. case "numericUpDown_ULO_ALC_Threshold_Default":
  2361. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2362. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ULO_ALC_Threshold_Default;
  2363. break;
  2364. case "numericUpDown_ULO_Shutdown_Threshold":
  2365. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2366. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ULO_Shutdown_Threshold;
  2367. break;
  2368. case "numericUpDown_ULO_Shutdown_Threshold_Default":
  2369. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2370. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_ULO_Shutdown_Threshold_Default;
  2371. break;
  2372. case "numericUpDown_MASK":
  2373. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type]
  2374. = (byte)Bluecell_BootProtocol.DATATYPE.Bluecell_Alarm_Mask;
  2375. break;
  2376. default:break;
  2377. }
  2378. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  2379. ReqTimer_Cnt = 0;
  2380. //to do
  2381. }
  2382. else if (e.KeyCode == Keys.Escape)
  2383. {
  2384. Activi_Change__Setting(null, null);
  2385. }
  2386. else
  2387. {
  2388. return;
  2389. }
  2390. }
  2391. private void button_Reset_Click(object sender, EventArgs e)
  2392. {
  2393. label_CompileDate.Text = "";
  2394. byte[] temp_buf = new byte[TableGetMaxLength];
  2395. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2396. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = (byte)Bluecell_BootProtocol.DATATYPE.BLUECELL_SOFTWARERESET;
  2397. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = TableGetMaxLength - 2;
  2398. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = TableGetMaxLength - 2;
  2399. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = (byte)1;
  2400. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  2401. ReqTimer_Cnt = 0;
  2402. }
  2403. private void numericUpDown_ATT_DL1_ValueChanged(object sender, EventArgs e)
  2404. {
  2405. }
  2406. private Thread[] rTh = new Thread[2];
  2407. private void button_AllExcelSave_Click(object sender, EventArgs e)
  2408. {
  2409. //Thread 객체 생성. 생성시 이 Thread가 실행할 메소드를 지정해 준다.
  2410. //여기서는 Count라는 메소드를 rTh라는 쓰레드가 실행하게 될 것이다.
  2411. rTh[0] = new Thread(ExcellTableAllSave);
  2412. rTh[0].Start();
  2413. }
  2414. // Thread로 수행할 작업
  2415. private void ExcellTableAllSave()
  2416. {
  2417. for (int i = 0; i < comboBox_TableName.Items.Count; i++)
  2418. {
  2419. comboBox_TableName.SelectedIndex = i;
  2420. Thread.Sleep(1000);
  2421. button_ExcelSave_Click(null, null);
  2422. }
  2423. rTh[0].Abort(); //쓰레드 강제 종료
  2424. rTh[1].Abort(); //쓰레드 강제 종료
  2425. Console.WriteLine("Thread 종료~");
  2426. }
  2427. private void button_LedTest_Click(object sender, EventArgs e)
  2428. {
  2429. byte[] temp_buf = new byte[BLUECELL_RESET_LENGTH];
  2430. Button button = (Button)sender;
  2431. DATATYPE datatype;
  2432. ReqTimer_Cnt = 0;
  2433. switch (button.Name)
  2434. {
  2435. case "button_LedTest":
  2436. datatype = DATATYPE.Bluecell_LED_TEST;
  2437. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data] = 1;
  2438. break;
  2439. default:
  2440. MessageBox.Show("잘 못된 값 입니다. 확인 부탁드립니다.");
  2441. return;
  2442. }
  2443. //pictureBox.Visible = false;
  2444. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Header] = BLUECELL_HEADER;
  2445. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Type] = Convert.ToByte(datatype);
  2446. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_Length] = 6;
  2447. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_CrcIndex] = 5;
  2448. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 1] = 0;
  2449. temp_buf[(int)Bluecell_ProtIndex_p.Bluecell_data + 2] = 1; //CRC
  2450. serial.Serial_DataSend(temp_buf, temp_buf.Length);
  2451. }
  2452. }
  2453. class AutoClosingMessageBox
  2454. {
  2455. [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
  2456. static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  2457. [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
  2458. static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
  2459. System.Threading.Timer _timeoutTimer; //쓰레드 타이머
  2460. string _caption;
  2461. const int WM_CLOSE = 0x0010; //close 명령
  2462. AutoClosingMessageBox(string text, string caption, int timeout)
  2463. {
  2464. _caption = caption;
  2465. _timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
  2466. null, timeout, System.Threading.Timeout.Infinite);
  2467. MessageBox.Show(text, caption);
  2468. }
  2469. //생성자 함수
  2470. public static void Show(string text, string caption, int timeout)
  2471. {
  2472. new AutoClosingMessageBox(text, caption, timeout);
  2473. }
  2474. //시간이 다되면 close 메세지를 보냄
  2475. void OnTimerElapsed(object state)
  2476. {
  2477. IntPtr mbWnd = FindWindow(null, _caption);
  2478. if (mbWnd != IntPtr.Zero)
  2479. SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
  2480. _timeoutTimer.Dispose();
  2481. }
  2482. }
  2483. }