Exemplo n.º 1
0
        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}");
            }
        }
Exemplo n.º 2
0
 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;
     }
 }