28-11-2019, 05:02 PM
أنا الآن أبرمج برنامج يحتاج للتعامل مع سيم كاردز ( يحتاج لثلاثة متعاملين أوريدو، موبيليس و جيزي)، لذا يجب علي ربط ثلاث مودم USB، كل واحد يحتوي على إحدى السيم كاردز.
أريدو طريقة لمعرفة كل Com Port لكل شريحة على هذا النحو:
مثلا
المودم الذي يحتوي على الشريحة أوريدو موجود في ال[size=small]Com [/size][size=small]Port[/size] التالي: COM7
المودم الذي يحتوي على الشريحة موبيليس موجود في ال[size=small][size=small][size=small]Com [/size][/size][/size][size=small][size=small][size=small]Port[/size][/size][/size] التالي: COM10
المودم الذي يحتوي على الشريحة جيزي موجود في ال[size=small][size=small][size=small]Com [/size][/size][/size][size=small][size=small][size=small]Port[/size][/size][/size] التالي: COM13
لذا سأحصل على المتغيرات التالية:
comOoredoo يحتوي على COM7 و يكون String طبعا
comMobilis يحتوي على [size=small]COM10[/size]
comDjezzy يحتوي على [size=small]COM10[/size]
[size=small]للإشارة حاولت عمل Procedure تقوم بالإتصال بكل Com Port على حدى ثم إرسال [size=small]AT+COPS?[/size] و من الإجابة أعرف السيم كارد الموجودة في المودم لكن لم أوفق في ذلك رغم أني أظن أن هذه الطريقة تعمل فقط أنا لم أطبقها بشكل جيد.[/size]
[size=small]هل من طريقة تعمل ؟[/size]
[size=small]ها هي الprocedure التي وصلت إليها إذا كانت قد تساعد:[/size]
أريدو طريقة لمعرفة كل Com Port لكل شريحة على هذا النحو:
مثلا
المودم الذي يحتوي على الشريحة أوريدو موجود في ال[size=small]Com [/size][size=small]Port[/size] التالي: COM7
المودم الذي يحتوي على الشريحة موبيليس موجود في ال[size=small][size=small][size=small]Com [/size][/size][/size][size=small][size=small][size=small]Port[/size][/size][/size] التالي: COM10
المودم الذي يحتوي على الشريحة جيزي موجود في ال[size=small][size=small][size=small]Com [/size][/size][/size][size=small][size=small][size=small]Port[/size][/size][/size] التالي: COM13
لذا سأحصل على المتغيرات التالية:
comOoredoo يحتوي على COM7 و يكون String طبعا
comMobilis يحتوي على [size=small]COM10[/size]
comDjezzy يحتوي على [size=small]COM10[/size]
[size=small]للإشارة حاولت عمل Procedure تقوم بالإتصال بكل Com Port على حدى ثم إرسال [size=small]AT+COPS?[/size] و من الإجابة أعرف السيم كارد الموجودة في المودم لكن لم أوفق في ذلك رغم أني أظن أن هذه الطريقة تعمل فقط أنا لم أطبقها بشكل جيد.[/size]
[size=small]هل من طريقة تعمل ؟[/size]
[size=small]ها هي الprocedure التي وصلت إليها إذا كانت قد تساعد:[/size]
كود :
procedure findMobilis();
var
i,j : integer;
begin
foundMobilis := false;
i:=0;
while (foundMobilis = false) and (i < Form1.comportsComboBox.Items.Count) do begin
Form1.CPMobilis.port := Form1.comportsComboBox.Items[i];
try
Form1.CPMobilis.open;
finally
end;
Form1.CPMobilis.WriteStr('WAIT=2' + #13#10);
if Form1.CPMobilis.Connected then begin
Form1.CPMobilis.WriteStr('AT' + #13#10);
Form1.CPMobilis.WriteStr('WAIT=3' + #13#10);
if response = 'OK' then begin
Form1.CPMobilis.WriteStr('AT+COPS?' + #13#10);
Form1.CPMobilis.WriteStr('WAIT=3' + #13#10);
j:=1;
while (response[j] = '"') do j := j+1;
if response[j] = 'M' then begin
comMobilis := Form1.comportsComboBox.Items[i];
foundMobilis := True;
end;
end;
end;
i:=i+1;
end;
end;
