Вопрос к спецам!!
Вот решил попробовать свои силы в написании чего-нибудь для своего acorp ds110.
Решил начать с малого - работа со streamreader''ом. Выяснил что внутрях его есть
следующие функции: CheckForDVB, StartDVB,StopDVB,SetChannel,GetSignal и т.д.
Но вот не могу найти подробное описание передаваемых и возращаемых параметров.
Кое-как нашел код на C:
//Импортируем функции из streamreader
[DllImport("streamreader")]
public static extern bool CheckForDVB();
[DllImport("streamreader")]
public static extern bool DelFilter(int filter_num);
[DllImport("streamreader")]
public unsafe static extern void GetSignal(int* L, int* Q); ///Получение сигнала
[DllImport("streamreader")]
public static extern bool SendDiSEqC(int DiSEqCType, byte data);
[DllImport("streamreader")]
public unsafe static extern bool SetBitFilter(int pid, byte* FilterData, byte* FilterMask, byte FilterLength, void* lpFunc, int* lpfilter_num);
[DllImport("streamreader")]
public static extern bool SetChannel(int freq, int sr, int pol, int fec, int lof1, int lof2, int lofsw); ///Установка канала
[DllImport("streamreader")]
public unsafe static extern bool SetFilter(int pid, Delegate lpFunc, int CallBackType, int size, int* lpfilter_num);
[DllImport("streamreader")]
public static extern bool StartDVB();
[DllImport("streamreader")]
public static extern bool Statistic();///???
[DllImport("streamreader")]
public static extern bool StopDVB();
Сам пишу на Delphi. Как я понял, checkfordvb,startdvb и stopdvb ничего не принимают, а возра-
щают результат - boolean. А вот setchannel принимает параметры типа dword или integer.
Вот написал маленький тестик - checkdvb и startdvb проходят, а setchannel - вылетает ошибка
записи в $FFFFFFF. Может кто из спецов подскажет точные типы параметров к этим функциям!
Вот отрывок кода:
function MyCheckDVB:Boolean;StdCall;
function MyStartDVB:Boolean;StdCall;
function MyStopDVB:Boolean;StdCall;
function MySetChannel(freq,sr,pol,fec,lof1,lof2,lofsw:integer):Boolean;StdCall;
var
Form2: TForm2;
implementation
{$R *.dfm}
function MyCheckDVB; external ''C:\Streamreader.dll'' name ''CheckForDVB'';
function MyStartDVB; external ''C:\Streamreader.dll'' name ''StartDVB'';
function MySetChannel; external ''C:\Streamreader.dll'' name ''SetChannel'';
function MyStopDVB; external ''C:\Streamreader.dll'' name ''StopDVB'';
procedure TForm2.Button1Click(Sender: TObject);
begin
If MyCheckDVB=true then label1.Caption:=''true'' else label1.caption:=''false'';
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
If MyStartDVB=true then label2.Caption:=''true'' else label2.caption:=''false'';
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
If MyStopDVB=true then label3.Caption:=''true'' else label3.caption:=''false'';
end;
procedure TForm2.Button4Click(Sender: TObject);
var
pp:boolean;
begin
pp:=MySetChannel(11057000,26470000,1,0,9750000,10600000,11700000);
If pp=true then label4.Caption:=''OK'' else label4.caption:=''false'';
end;
end.