static void Main(string[] args) { Guid guid = new Guid("D9A2D7B7-F65A-4C00-B940-1BED6C525DA1"); try { DEVITEMAVL devItem = new DEVITEMAVL(); WriteDataToFile(FileName, ref guid, ModuleName, ref devItem, true); //Console.WriteLine($"ItemNo : {devItem.ItemNo}"); int Count = Convert.ToInt32(devItem.ItemNo); int size = Marshal.SizeOf(typeof(DEVITEM)); Console.WriteLine($"Size = {size}"); IntPtr devitemptr = Marshal.AllocHGlobal(size * Count); DEVITEM[] items = new DEVITEM[Count]; for (int i = 0; i < Count; i++) { IntPtr ptr = (IntPtr)(devItem.Item + i * size); //IntPtr ptr = devItem.Item; items[i] = (DEVITEM)Marshal.PtrToStructure(ptr, typeof(DEVITEM)); } Marshal.FreeHGlobal(devitemptr); foreach (var item in items) { //DataType = DataType2String(item.DataType); Console.WriteLine($"ItemName = {item.ItemName},MinIndex = {item.MinIndex},MaxIndex = {item.MaxIndex},DataType = {item.DataType}"); } } catch (Exception ex) { Console.WriteLine($"Exception:{ex.Message}"); } }
private void GenerateCode() { try { TreeNode selectedNode = treeView1.SelectedNode; if (selectedNode.Nodes.Count == 0) //&& bRegSuccess { var itemList = from dev in devList where dev.Name == selectedNode.Text select dev; string str = ""; FileName = GetFilePathByClsid(itemList.FirstOrDefault().guid.ToString()); //MessageBox.Show(FileName); foreach (var item in itemList) { str = item.guid.ToString(); bWriteDataSuccess = WriteDataToFile(FileName, ref item.guid, selectedNode.Text, ref Devitemval, false); } if (bWriteDataSuccess) { StreamWriter streamWriter = new StreamWriter(File.Create("result.txt"), Encoding.UTF8); //MessageBox.Show($"读取成功!", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information); int Count = Convert.ToInt32(Devitemval.ItemNo); int size = Marshal.SizeOf(typeof(DEVITEM)); IntPtr devitemptr = Marshal.AllocHGlobal(size * Count); DEVITEM[] items = new DEVITEM[Count]; for (int i = 0; i < Count; i++) { IntPtr ptr = (IntPtr)(Devitemval.Item + i * size); //IntPtr ptr = devItem.Item; items[i] = (DEVITEM)Marshal.PtrToStructure(ptr, typeof(DEVITEM)); } Marshal.FreeHGlobal(devitemptr); streamWriter.WriteLine($"DEVICE_REGISTER ucSurpportRegisters_{selectedNode.Text}" + $"[]="); streamWriter.WriteLine($"{{"); int j = 0; foreach (var item in items) { if (item.DataType == BIT_DATATYPE) { streamWriter.WriteLine($"\t{{" + $"\"{item.ItemName}\",\t" + $"{item.MinIndex}, " + $"{item.MaxIndex},\t" + $"{TransferDataType(item.DataType)},\t" + $"{item.reserve[0]}, " + $"{item.reserve[1]}, " + $"{item.reserve[2]}, " + $"{item.reserve[3]}, " + "\"\"" + $"}}," + $"\t// {j}" ); j++; } else if (item.DataType == FLOAT_DATATYPE || item.DataType == INT_DATATYPE) { streamWriter.WriteLine($"\t{{" + $"\"{item.ItemName}\",\t" + $"{item.MinIndex}, " + $"{item.MaxIndex},\t" + $"{TransferDataType(item.DataType)},\t" + $"{item.reserve[0]}, " + $"{item.reserve[1]}, " + $"{item.reserve[2]}, " + $"{item.reserve[3]}, " + "\"{\\\"Min\\\":\\\"-99999\\\",\\\"Max\\\":\\\"99999\\\",\\\"MinRaw\\\":\\\"-99999\\\",\\\"MaxRaw\\\":" + "\\\"99999\\\"}\"" + $"}}," + $"\t// {j}" ); j++; } } streamWriter.WriteLine($"}};"); streamWriter.Flush(); streamWriter.Close(); ShowResult(); } else { System.Media.SystemSounds.Asterisk.Play(); MessageBox.Show($"暂不支持此驱动", "Sorry", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { return; } } catch (Exception ex) { System.Media.SystemSounds.Asterisk.Play(); MessageBox.Show($"Exception : {ex.Message}", "Sorry", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } }