Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.13;
Скачать: CL | DM;

Вниз

Проблема с Модемом   Найти похожие ветки 

 
ksa3003 ©   (2003-01-15 10:01) [0]

Народ отправляю сообщение модему,а тот ГАД в ответ молчит как, партизан.Если кто рабатал с модемами,может подскажити???


 
Vad ©   (2003-01-16 01:25) [1]

Ты не сообщения отправляй, а команды!


 
ksa3003 ©   (2003-01-16 06:41) [2]

Так я и отправляю допустим ATI иии-и-и ничего. нет в буфере данных.


 
Digitman ©   (2003-01-16 11:56) [3]

ATI <cr>


 
ksa3003 ©   (2003-01-16 13:00) [4]

Неработает.Может ктонибуть даст исходник плиззз(если не жалко)


 
Digitman ©   (2003-01-16 13:05) [5]

> ksa3003


> Неработает


Чего не работает-то ? Код-то свой покажи) ... чего ты твм творишь - совершенно непонятно ... в "угадай с 3-х раз" будем играть ?


 
ksa3003 ©   (2003-01-16 13:20) [6]

Щас будет


 
ksa3003 ©   (2003-01-16 13:23) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
dcb : TDcb;
hCom : THandle;
fSuccess : boolean;
dwRead : DWORD;
cs:TcomStat;
s:string;
CharArray : array[0..100000] of char;
fileOut : file of char;
i : integer;
begin
hCom := CreateFile(PChar("COM1"),GENERIC_READ+GENERIC_write,0,nil,OPEN_EXISTING,0,0); //получение указателя на СОМ2

try


fSuccess:= GetCommState(hCom, dcb);

dcb.BaudRate := CBR_9600;
dcb.ByteSize := 8;
dcb.Parity := NOPARITY;
dcb.StopBits := ONESTOPBIT;

fSuccess := SetCommState(hCom, dcb);

except
ShowMessage("Error");
end;

memo3.text:=""; s:="at&v" + #13 + #10;
dwRead:=0;
writeFile(hCom, Pchar(s)^, length(s), dwRead, nil);
dwRead:=0;
for i:=0 to 1000 do
begin
memo1.text:=inttostr(cs.cbinQue);
memo2.text:=inttostr(cs.cbOutQue);
ReadFile(hCom, CharArray[i], 1, dwRead, nil);
memo3.text:=memo3.text+CharArray[i];

end;

AssignFile(FileOut,"c:\out.txt");
Rewrite(FileOut);
for i:=0 to 10 do
begin
Application.ProcessMessages;
Write(FileOut,CharArray[i]);
end;

CloseFile(FileOut);
CloseHandle(hCom);
end;
end.
Вот !!!


 
Digitman ©   (2003-01-16 13:37) [8]

вот это вот :


> writeFile(hCom, Pchar(s)^, length(s), dwRead, nil);



с какого боку ты разыменование-то делаешь ?
2-й параметр в вызове writeFile() объявлен как const Buffer; !!!

ф-ция здесь ожидает любой указатель, передаваемый по значению

а ты что передаешь ? не значение указателя, а значение по адресу, на который ссылается указатель ! Одним словом - хрень всякую передаешь, а не at&v<cr> ))))

вот он тебе и не отвечает, потому как на хрень реагировать вовсе не обязан))))


 
ksa3003 ©   (2003-01-16 13:54) [9]

Ладно вместо второй хрене поставим string и всеравно нифига уже
пробовал


 
Anatoly Podgoretsky ©   (2003-01-16 14:02) [10]

Это как поставил?


 
ksa3003 ©   (2003-01-16 14:05) [11]

Примерно так
s:string;
s:="ati";
writeFile(hCom, s,length(s), dwRead, nil);


 
Anatoly Podgoretsky ©   (2003-01-16 14:11) [12]

Вот опять неверно, ты бы сразу когда говоришь, что сделал правильно, приводилбы свой правильный код :-)

Pchar(s)


 
Digitman ©   (2003-01-16 14:13) [13]


> Примерно так
> s:string;
> s:="ati";
> writeFile(hCom, s,length(s), dwRead, nil);


еще большая "хрень")))

ладно, не парься ... чувствуется, до осознания необходимости читать книги по Паскалю, ты еще не созрел)

> writeFile(hCom, PChar(s),length(s), dwRead, nil);


 
ksa3003 ©   (2003-01-16 14:23) [14]

Нашёл каяк.
s:="ati"+"<cr>";
writeFile(hCom, Pchar(s)^, length(s), dwRead, nil);
B всеравно тишина


 
Digitman ©   (2003-01-16 14:28) [15]


> ksa3003 © (16.01.03 14:23)
> Нашёл каяк.
> s:="ati"+"<cr>";
> writeFile(hCom, Pchar(s)^, length(s), dwRead, nil);
> B всеравно тишина



)))))))))))
ему про фому, он все - про ерему гнет )))))

я тебе уже дал верный код ! см. Digitman © (16.01.03 14:13)


 
ksa3003 ©   (2003-01-16 14:29) [16]

Нету уменя описания.
Было бы не полез бы.
Я всего то прошу кусочек работающего кода
(что бы скинула и прочитала из порта)


 
Digitman ©   (2003-01-16 14:32) [17]


> Нету уменя описания.
> Было бы не полез бы.


Какого описания ? Ф-ции WriteFile() ?
Не выдумывай - оно у тебя перед носом, в "Win32 API Programmers reference help"
Равно как и декларация ф-ции для ее использования в проложении - в модуле Windows.pas


> Я всего то прошу кусочек работающего кода


Ну дал я тебе этот "кусочек" уже !! Чего ж тебе еще надобно, старче ?))))


 
ksa3003 ©   (2003-01-16 14:39) [18]

Ну не работает даже так.
Как работает WriteFile() я,знаю.
Мне нужен кусок программы которая работает , а эта пересылает
, а буфер пустой, я и хочу разабрать в чём дело.


 
Reindeer Moss Eater   (2003-01-16 14:42) [19]

Попробуй протереть модем от пыли


 
Anatoly Podgoretsky ©   (2003-01-16 14:48) [20]

ksa3003 © (16.01.03 14:39)
Ну так наверно опять "правильный" код, ты бы уж сразу прямо просил, напиши за меня программу.


 
Digitman ©   (2003-01-16 14:49) [21]


> ksa3003


Приведи самый последний вариант того же кода, с учетом внесенных исправлений


> а эта пересылает
> , а буфер пустой

А хрен его знает, о чем ты здесь говоришь) ..
Кто такая "эта" ? Куда и чего пересылает ? Ума не приложу)...
И ты вообще о каком буфере речь-то ведешь ?

p.s. и что, даже индикатор SD не "моргает" на модеме в момент WriteFile() ? Иль не удосужился поинтересоваться лампочками на модеме ?


 
Игорь Шевченко ©   (2003-01-16 14:50) [22]

Digitman © (16.01.03 13:37)


> с какого боку ты разыменование-то делаешь ?
> 2-й параметр в вызове writeFile() объявлен как const Buffer;
> !!!
>
> ф-ция здесь ожидает любой указатель, передаваемый по значению
>
> а ты что передаешь ? не значение указателя, а значение по
> адресу, на который ссылается указатель !


?????

При WriteFile (....Pchar(s),... ) Будет передана ссылка на указатель, а не на то, на что этот указатель указывает


 
ksa3003 ©   (2003-01-16 14:51) [23]

Модемчик чист :)


 
Reindeer Moss Eater   (2003-01-16 15:02) [24]

CmdStr:="ATI"#13#10;
WriteFile(....CmdStr[1],.....);


 
ksa3003 ©   (2003-01-16 15:02) [25]

procedure TForm1.Button1Click(Sender: TObject);
VAR
dcb : TDcb;
fSuccess : boolean;
dwRead : DWORD;
CharArray : array[0..10] of char;
fileOut : file of char;
i : integer;
s:string;
s1:Pchar;
begin
hCom := CreateFile(PChar("COM1"),GENERIC_READ+GENERIC_write,0,nil,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
try
fSuccess:= GetCommState(hCom, dcb);
dcb.BaudRate := CBR_9600;
dcb.ByteSize := 8;
dcb.Parity := NOPARITY;
dcb.StopBits := ONESTOPBIT;
fSuccess := SetCommState(hCom, dcb);

except
ShowMessage("Error");
end;

s:="ati"+"<cr>";
//s1:=s;
dwRead:=0;
WriteFile(hCom, s, Length(s), dwRead, nil);
memo1.text:="";
ShowMessage("Ok!!") ;
for i:=0 to 10 do
CharArray[i]:="0";
begin
end;

AssignFile(FileOut,"c:\COM.txt");
Rewrite(FileOut);
for i:=0 to 10 do
begin
Application.ProcessMessages;
Write(FileOut,CharArray[i]);
end;

CloseFile(FileOut);

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:=inttostr(ComStat.cbInQue );
edit2.Text:=inttostr(ComStat.cbOutQue );
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
CloseHandle(hCom);
end;
end.

Если я пишу WriteFile(.. Pchar(s)...), тогда ошибка при компиляции, приходится писать WriteFile(.. s...), А модем даже лампочкми не мигает.


 
gsu ©   (2003-01-16 15:03) [26]

>> ksa3003 ©
и питание проверь (-:|~


 
ksa3003 ©   (2003-01-16 15:04) [27]


> CmdStr:="ATI"#13#10;
> WriteFile(....CmdStr[1],.....);

Щас попробую


 
Digitman ©   (2003-01-16 15:04) [28]


> ksa3003


Приношу извинения.
Все же конструкция с разыменованием PChar(s)^ в дан.контексте верна

Неверна она будет в случае типиз.указ.аргумента, передаваемого константой


> Модемчик чист :)


Вот ты выполнил

hCom := CreateFile(PChar("COM1"),GENERIC_READ+GENERIC_write,0,nil,OPEN_EXISTING,0,0);

чему равно значение hCom после выполнения этой строчки ? Где проверка на успешность выполнения ф-ции ?


 
ksa3003 ©   (2003-01-16 15:13) [29]

Добавим
if fSuccess then ShowMessage("Работаем!")
else ShowMessage("Error of initiate ComPort...");

перед
WriteFile
Модем молчит


 
Digitman ©   (2003-01-16 15:48) [30]

1. Ты уверен, что модем "сидит" на COM1 ? Что говорят св-ва модема и успешна ли встроенная диагностика модема ?

2. Если таки fSuccess = True, то почему далее по тексту не анализируешь результат, возвращаемый WriteFile ?


 
ksa3003 ©   (2003-01-17 08:44) [31]

Заработала!!!!! Ура!!!!! Всем болбшое спасибо!!!!!
Персанальное сбасибо Digitman
И ещё один вопрос
Как посмотреть сколько в буфере порта данных ,пробовал ч.з
cbInQue/cbOutQue а там только нули ,может подскажити в чём дело


 
jack128 ©   (2003-01-17 09:03) [32]

var stat: TCOMSTAT;
errs: DWORD;
begin
// Do nothing if port has not been opened
Result := 65535;
if not Connected then
exit;
// Get count
ClearCommError( Handle, errs, @stat );
Result := stat.cbInQue;
end;
Должен работать...
Вроде :)


 
jack128 ©   (2003-01-17 09:07) [33]

Да забыл сказать

s:="ati"+"<cr>"; - ЭТО КРУТО!!


 
ksa3003 ©   (2003-01-17 11:31) [34]

ВСЁ. Заработала. Сбасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.03.13;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.018 c
7-39617
SeF
2003-01-13 11:19
2003.03.13
DllProc


1-39323
Igorxx
2003-03-04 15:42
2003.03.13
Вызов VCL из DLL


1-39329
Сергей
2003-03-01 00:15
2003.03.13
Бегунок процесса вычисления


8-39424
aspen
2002-12-03 13:06
2003.03.13
как избежать мерцания при перерисовке?


6-39451
Владимир
2003-01-12 07:30
2003.03.13
Свой Firewall