
هذا الموضوع مرتبط من حيث استيقاء المعلومات بالتفصيلات الواردة في موضوع
"كيف تتعرف على أجهزة انترستار من خلال System Info"

في هذه المشاركة سوف نستقي من باتش interStar Premimium معلومات النظام ثم نصنع برنامجا بلغة VB ليبين لنا معلومات النظام
وهو غير صالح لأجهزة InterStar Plus
أولا / معرفة مكان معلومات النظام في الباتش
أولا يجب معرفة مكان معلومات النسخة الرئيسية في الباتش ويمكن ذلك بواسطة البحث عن تاريخ انشاء الباتش (مثلما تبدو في الصورة نبحث عن 20050906 ولا نضع أي علامة خاصة مستعملة في التواريخ مثل '/' أو '-' ..وهي ومعلومات النظام موجودة في بداية و في نهاية الباتش لكننا سنتعامل مع التي في بداية الباتش لأنها مكانها ثابت. الصورة
يوجد اختلاف بسيط بين الأجهزة D و الأجهزة S بخصوص مكان معلومات النظام في الباتش
تفسير البلوك المحتوي على معلومات النظام : الصورة توضح معلومات النظام
لنقارن معلومات النظام مع الصورة في الأسفل كما تبدو في الشاشة
الأستثناء الوحيد هو في Data Version مضاف إليها 6 / لها قاعدة خاصة (وليس +6 دائما بل هناك حساب خاص)
لن أتعرض لشرح بيئة Visual Basic فهذا الموضوع يفترض معرفة مسبقة بلغة البرمجة للمبتدئينVisual Basic (وأنا منهم) ولذلك قم بإنشاء مشروع جديد يحتوي على كائناتForm label و Text و Button و CommonDialog مثلما يظهر في الصورة
مثلما يبدو في الصورة ولا داعي للتفصيل في هذه النقطة كثيرا

هذا المشروع ليس كاملا 100 % بسبب أنه مجرد مثال فقط لمعرفة كيفية استغلال معلومات النظام داخل الباتش وإعادة تنظيمها في البرنامج ولا يمكن اعتباره برنامجا حقيقيا .. وهو ليس لودر للتحميل و لا خوف من استعماله لأن لا يقوم بأية معالجة للباتش بل هو مجرد كاشف للمعلومات لا أكثر
المعلومات التي يقدمها البرنامج تساعدك في معرفة السوفتوير الذي تريد تحميله إلى الجهاز ليمكنك مطابقة ذلك مع الجهاز الذي لديك أو معرفة هوية السوفتوير وهي كما تظهر في الصورة
وبذلك يمكنك بواسطته معرفة
1-أي نوع من الأجهزة D أو S / في CPU Type
2- لأي جهاز مخصص الباتش الذي لديك -- في DSR
3- أي انترفاس مستخدم Gui
الشيئ الوحيد الذي لا يقدمه هو رقم البوت
أولا نقوم بعملية Declaration
Option Explicit
Dim str As String
Dim str_tmp As String
Dim FileName As String
Dim VerInfo As Byte
Dim i As Integer
برمجة التصفية التلقائية للملفات Bin في علبة الحوار "فتح" و تحديد مسار الملف بعد اختياره من طرف المستخدم
Private Sub Command1_Click
"CommonDialog1.Filter = "Bin Files|*.bin
CommonDialog1.ShowOpen
Text1.Text = CommonDialog1.FileName
FileName = Text1.Text
""=Str
إذا كان حجم الملف أقل من 1.5 ميغا نبدأ في قراءة المعلومات ونعيد تنشيط المتغيرات من جديد
ولكن Full Flash يقارب 2 ميغا وبهذا فالبرنامج لا يقرأ ملفات Full Flash ؟؟ هذا صحيح ..ولكن ما دام البرنامج مجرد مثال لا يهم ذلك
هنا سنبدأ في قراءة البلوك المتضمن معلومات النسخة الرئيسية
تحميل معلومات النظام إلى متغير
""=str
""=str_tmp
For i = 0 To 12
Get #1, 65652 + i, Verinfo
str_tmp = Hex(Verinfo)
If Len(str_tmp) = 1 Then str_tmp = "0" + str_tmp
str = str + str_tmp
Next
""= str
""= str_tmp
For i = 0 To 12
Get #1, 65652 + i , VerInfo
(str_tmp = Hex(VerInfo
لتفادي حذف الصفر بعد قراءة المعطيات فإنن نقوم بإضافته بعد حذفه (إذا لم تضع هذه التعليمية فإن البرنامج سيحذف الصفر وستظهر تاريخ 20050906 مثل التالي 20596)
If Len(str_tmp) = 1 Then str_tmp = "0" + str_tmp
بعد قراءة المعلومات من الباتش تأتي مرحلة تحديد الحالة لقراءة معرف الانترفاس ومعرف الميكروكونترولر ومعرف المودال ومعرف البيريتال
نبدا في قراءة المعلومات من الباتش وحدة وحدة و في الأول نقرأ معلومات الأنترفاس GUI
ونستخدم تحديد الحالة Select Case ..فإذا كان Gui=4 فهو انترفاس انترستار وإذا كان Gui =7 فهو انترفاس ستارسات وهكذا مثلما شرحناه في موضوع كيف تتعرف على اجهزة انترستار من خلال System Info
نستخدم دالة Mid لتحديد موقع المعرف (واحد فقط ابتداء من الرقم التاسع)
(strDSRGUI = Mid(str, 9, 1
Select Case strDSRGUI
Case Is = 4
"Label2(2).Caption = "InterStar
Case Is = 6
" Label2(2).Caption = "SuperLazer
Case Is = 7
" Label2(2).Caption = "StarSat
Case Is = 8
" Label2(2).Caption = "New InterStar
Case Else
"" = Label2(2).Caption
End Select
بالطبع يمكننا تفاديا للتكرار استخدام دالة With /end with
with label2
end with
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
بنفس الطريقة نحدد موقع معرف البروسيسور ويقرأ معطى واحد ابتداء من سادس في البلوك ... ثم نقوم بتحديد الحالات (احتمالات)
(strCPU = Mid(str, 6, 1
Select Case strCPU
Case Is = 3
"Label2(0).Caption = "NEC UPD61120 :Type D
Case Is = 5
"Label2(0).Caption = "NEC UPD61115 :Type S
Case Is = 4
"Label2(0).Caption = "Nec UPD61130
Case Else
""=Label2(0).Caption
End Select
بنفس الطريقة نحدد موقع معرف Model الجهاز ثم نحدد حسب الحالة
(strDSRType = Mid(str, 7, 1
Select Case strDSRType
Case Is = 1
"Label2(1).Caption = "Satellite FTA receiver
Case Is = 2
"Label2(1).Caption = "Satellite receiver with CI slot
Case Is = 3
"Label2(1).Caption = "Satellite FTA receiver with Smart card slot
Case Is = 4
"Label2(1).Caption = "Satellite receiver with CI and Smart card slot
Case Is = 5
"Label2(1).Caption = "Terrestrial FTA receiver
Case Is = 6
"Label2(1).Caption = "Terrestrial receiver with CI
Case Is = 7
"Label2(1).Caption = "Compact setellite FTA receiver
Case Is = 8
"Label2(1).Caption = "Terrestrial and satellite FTA receiver
Case Is = 9
"Label2(1).Caption = "Terrestrial and satellite receiver with CI slot
Case Else
""= Label2(1).Caption
End Select
بنفس الطريقة نحدد موقع معرف البيريتال Scart الجهاز ثم نحدد حسب الحالة
(strDSrcart = Mid(str, 8, 1
Select Case strDSrcart
Case Is = 1
"Label2(3).Caption = "Neant
Case Is = 2
"Label2(3).Caption = "Un
Case Is = 3
"Label2(3).Caption = "Deux
Case Else
""= Label2(3).Caption
End Select
بنفس الطريقة نحدد موقع معرف الجهاز الذي سيتقبل الباتش وهذا الجزء لم نتطرق إليه في موضوع كيف تتعرف على انترستار
(strDSrVend = Mid(str, 3, 2
Select Case strDSrVend
"Case Is = "08
"Label2(4).Caption = "Baff
"Case Is = "11
"Label2(4).Caption = "Focus
"Case Is = "0E
"Label2(4).Caption = "Golf
"Case Is = "03
"Label2(4).Caption = "InterStar
"Case Is = "12
"Label2(4).Caption = "MediaStar
"Case Is = "0F
"Label2(4).Caption = "Orient
"Case Is = "0A
"Label2(4).Caption = "SuperLazer
"Case Is = "10
"Label2(4).Caption = "StarSat
"Case Is = "02
"Label2(4).Caption = "SuperStar
Case Else
""= Label2(4).Caption
End Select
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
نقرأ الفيرسيون -مثلا 1.71- ا وهي موجودة في الباتش على شكل 171 ولذلك نقرأ المعطى 10 في البلوك ثم نضيف "." نقطة ثم نقرأ ماتبقى
(Label2(6).Caption = Mid(str, 10, 1) & "." & Mid(str, 11, 2
بنفس الطريقة نقرأ تاريخ وساعة انشاء الباتش و نستخدم نفس الطريقة السابقة (إضافة "/" في التاريخ و ":" في الوقت)
Label2(7).Caption = Mid(str, 13, 4) & "/" & Mid(str, 17, 2) & "/" & Mid(str, 19, 2) & " " & Mid(str, 21, 2) & ":" & Mid(str, 23, 2) & ":" & Mid(str, 25, 2)
قـــــراءة Version Data
Label2(8).Caption = Mid(str, 1, 2) + 6
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
نعيد تنظيم المعطيات لتظهر على شكل مطابق لماتظهر عليه في الشاشة G4C3M2S3 -مثلا-
Label3.Caption = "Version principale: " & Label2(6) & " " & "G" & strDSRGUI & "C" & strCPU & "M" & strDSRType & "S" & strDSrcart
ثم نغلق الملف
Close #1
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ماهو الهدف من هذا الموضوع ؟؟؟
بهذه الأسطر القليلة صنعنا بلغة البرمجة Visaul Baisc برنامجا صغيرا يمكنك به معرفة النسخة المستخدمة والداتا ويكشف لك لأي جهاز هو مخصص و أي خلفية مستخدمة في هذا الباتش
ومن الطبيعي مادام مصنوعا بلغة البرمجة للمبتدئين فهو يحتاج إلى تنصيب أو تثبيت installation ..وبذلك يمكنك تجنب تحميل ملف ليس مطابقا لجهازك
البرنامج غير صالح مع الإصدارات المقبلة ولذلك وجب التنبيه وذلك لأنه مجرد مثال فقط
حمله من هنا GI Sys Info
توضيح لفهم معطيات البرنامج