Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.007 c
14-39479
Fishka
2003-02-27 11:30
2003.03.13
Регистрация и разрегистрация


1-39279
KpeHgeJIb
2003-03-03 16:44
2003.03.13
Перетягивание картинки в произвольную часть экрана...


14-39522
iNew
2003-02-26 05:20
2003.03.13
При попытке установить компонент выдаетсф Fatal Error:


3-39154
wildcow
2003-02-20 14:33
2003.03.13
SQL и нити


4-39625
Matrex
2003-01-22 21:42
2003.03.13
Работа с файлами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский