Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Pascal
Перезагрузить страницу Работа с COM-портом
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 25.12.2007, 01:43

Привет всем спецам! Я занимаюсь аспирантской работой по металлам. Надо собирать установку и часть такой работы касается КОМ-порта.
Необходимо заставлять его принимать и отправлять данные.
Нашел в инете как это делать, но возникли вопросы.


1)
Код:
program vivod;
uses crt,dos;
var
base:integer;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
readln;
port[base+4]:=0;
end.
Это программа на вывод логического нуля и единицы.
В данном виде программа просто дает одно напряжение. Менять его не хочет.
Я методом тыка видоизменил ее и стало получаться, а потом вернулся к данному виду и опять лажа
Не подскажете что изменить надо? Я хочу чтобы на экране было написано: порт выдает логический "0" или порт выдает логическую "1".
Потом нажав Энтер менять ноль на единицу и наоборот.
Если можно в Паскале считывать напряжение порта - скажите плиз как. Будет совсем здорово

2)
Код:
program vvod;
uses crt,dos;
var
base,result:integer;
e:byte;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
e:=port[base+6] and 16; {Prisvoit' e sostoyanie CTS}
if e=16 then result:=1
        else result:=0;
writeln('Na portu ',result); {Vivod rezultata}
readln; {Jdat' najatiya Enter}
port[base+4]:=0; {Sbrosit' vixodi porta}
end.
Это программа на принятие портом данных. Она работает в таком режиме:
Если что-то "висит" на ком-порте, то выдает "1", если не весит - "0".
Я беру джойстик для проверки и подсоединяя его к порту получаю 1-цу всегда.
Как должно быть:
1) если кнопку джойстика жму - "1"
2) если не жму - "0".
3) кабель не висит - тоже "0".
Как сделать так? Я вроде сделал, а сейчас опять не получается(((


Заранее спасибо. Очень жду ответа.

Андрей.
Ответить с цитированием
  (#2 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 25.12.2007, 01:43

Привет всем спецам! Я занимаюсь аспирантской работой по металлам. Надо собирать установку и часть такой работы касается КОМ-порта.
Необходимо заставлять его принимать и отправлять данные.
Нашел в инете как это делать, но возникли вопросы.


1)
Код:
program vivod;
uses crt,dos;
var
base:integer;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
readln;
port[base+4]:=0;
end.
Это программа на вывод логического нуля и единицы.
В данном виде программа просто дает одно напряжение. Менять его не хочет.
Я методом тыка видоизменил ее и стало получаться, а потом вернулся к данному виду и опять лажа
Не подскажете что изменить надо? Я хочу чтобы на экране было написано: порт выдает логический "0" или порт выдает логическую "1".
Потом нажав Энтер менять ноль на единицу и наоборот.
Если можно в Паскале считывать напряжение порта - скажите плиз как. Будет совсем здорово

2)
Код:
program vvod;
uses crt,dos;
var
base,result:integer;
e:byte;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
e:=port[base+6] and 16; {Prisvoit' e sostoyanie CTS}
if e=16 then result:=1
        else result:=0;
writeln('Na portu ',result); {Vivod rezultata}
readln; {Jdat' najatiya Enter}
port[base+4]:=0; {Sbrosit' vixodi porta}
end.
Это программа на принятие портом данных. Она работает в таком режиме:
Если что-то "висит" на ком-порте, то выдает "1", если не весит - "0".
Я беру джойстик для проверки и подсоединяя его к порту получаю 1-цу всегда.
Как должно быть:
1) если кнопку джойстика жму - "1"
2) если не жму - "0".
3) кабель не висит - тоже "0".
Как сделать так? Я вроде сделал, а сейчас опять не получается(((


Заранее спасибо. Очень жду ответа.

Андрей.
Ответить с цитированием
  (#3 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 25.12.2007, 01:43

Привет всем спецам! Я занимаюсь аспирантской работой по металлам. Надо собирать установку и часть такой работы касается КОМ-порта.
Необходимо заставлять его принимать и отправлять данные.
Нашел в инете как это делать, но возникли вопросы.


1)
Код:
program vivod;
uses crt,dos;
var
base:integer;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
readln;
port[base+4]:=0;
end.
Это программа на вывод логического нуля и единицы.
В данном виде программа просто дает одно напряжение. Менять его не хочет.
Я методом тыка видоизменил ее и стало получаться, а потом вернулся к данному виду и опять лажа
Не подскажете что изменить надо? Я хочу чтобы на экране было написано: порт выдает логический "0" или порт выдает логическую "1".
Потом нажав Энтер менять ноль на единицу и наоборот.
Если можно в Паскале считывать напряжение порта - скажите плиз как. Будет совсем здорово

2)
Код:
program vvod;
uses crt,dos;
var
base,result:integer;
e:byte;
begin
base:=$3F8; {Prisvoenie bazovogo adressa}
port[base+4]:=2; {Ustanovit' RTS}
e:=port[base+6] and 16; {Prisvoit' e sostoyanie CTS}
if e=16 then result:=1
        else result:=0;
writeln('Na portu ',result); {Vivod rezultata}
readln; {Jdat' najatiya Enter}
port[base+4]:=0; {Sbrosit' vixodi porta}
end.
Это программа на принятие портом данных. Она работает в таком режиме:
Если что-то "висит" на ком-порте, то выдает "1", если не весит - "0".
Я беру джойстик для проверки и подсоединяя его к порту получаю 1-цу всегда.
Как должно быть:
1) если кнопку джойстика жму - "1"
2) если не жму - "0".
3) кабель не висит - тоже "0".
Как сделать так? Я вроде сделал, а сейчас опять не получается(((


Заранее спасибо. Очень жду ответа.

Андрей.
Ответить с цитированием
  (#4 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 27.12.2007, 00:14

COM-порт не выдает напряжений, он выдает сигналы, изменяющиеся во времени. Если хочешь зафиксировать напряжение на выходе, нужно использовать параллельный порт.
Ответить с цитированием
  (#5 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 27.12.2007, 00:14

COM-порт не выдает напряжений, он выдает сигналы, изменяющиеся во времени. Если хочешь зафиксировать напряжение на выходе, нужно использовать параллельный порт.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
andriano andriano вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 13.02.2006
По умолчанию 27.12.2007, 00:14

COM-порт не выдает напряжений, он выдает сигналы, изменяющиеся во времени. Если хочешь зафиксировать напряжение на выходе, нужно использовать параллельный порт.
Ответить с цитированием
  (#7 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 11:17

Да ничего подобного, линии RTS и DTR прекрасно выдают статические сигналы. Вот только уровень логического "0" - (ежели мой склероз мне не изменяет) +(3...12)В, уровень лог. "1" - -(3...12)В.
Вопрос к yosip111: а принципиально писать эту программу именно на Паскале под MS DOS? Имей в виду, что современные ОС (Win2000 и старше) просто так к порту "не пустят" - попытка прямого управления железом скорее всего вызовет премиленькое окошко вида "Программа выполнила недопустимую операцию и будет закрыта." Может быть, стоит перейти под Win32?


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
  (#8 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 11:17

Да ничего подобного, линии RTS и DTR прекрасно выдают статические сигналы. Вот только уровень логического "0" - (ежели мой склероз мне не изменяет) +(3...12)В, уровень лог. "1" - -(3...12)В.
Вопрос к yosip111: а принципиально писать эту программу именно на Паскале под MS DOS? Имей в виду, что современные ОС (Win2000 и старше) просто так к порту "не пустят" - попытка прямого управления железом скорее всего вызовет премиленькое окошко вида "Программа выполнила недопустимую операцию и будет закрыта." Может быть, стоит перейти под Win32?


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
  (#9 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 11:17

Да ничего подобного, линии RTS и DTR прекрасно выдают статические сигналы. Вот только уровень логического "0" - (ежели мой склероз мне не изменяет) +(3...12)В, уровень лог. "1" - -(3...12)В.
Вопрос к yosip111: а принципиально писать эту программу именно на Паскале под MS DOS? Имей в виду, что современные ОС (Win2000 и старше) просто так к порту "не пустят" - попытка прямого управления железом скорее всего вызовет премиленькое окошко вида "Программа выполнила недопустимую операцию и будет закрыта." Может быть, стоит перейти под Win32?


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
  (#10 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 27.12.2007, 13:08

Просто Паскаль - это единственный язык который я немного знаю.
В остальных языках я не знаю как это делать.
Ответить с цитированием
  (#11 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 27.12.2007, 13:08

Просто Паскаль - это единственный язык который я немного знаю.
В остальных языках я не знаю как это делать.
Ответить с цитированием
  (#12 (permalink)) Старый
Dynamite Dynamite вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2007
По умолчанию 27.12.2007, 13:08

Просто Паскаль - это единственный язык который я немного знаю.
В остальных языках я не знаю как это делать.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 22:40

Поищи по Форуму по лексеме "RS232" или "COM-порт", примеры работы с портом были.
Гм. Ну, кроме Паскаля под ДОС, есть еще Delphi с очень-очень похожим синтаксисом. А разбираться с программированием под Win32 все равно придется, - я, например, не знаю ни одного моего знакомого, кто еще сидел бы хотя бы под Windows'98, не говоря уж о почтенной старушке ДОС.
Ответить с цитированием
  (#14 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 22:40

Поищи по Форуму по лексеме "RS232" или "COM-порт", примеры работы с портом были.
Гм. Ну, кроме Паскаля под ДОС, есть еще Delphi с очень-очень похожим синтаксисом. А разбираться с программированием под Win32 все равно придется, - я, например, не знаю ни одного моего знакомого, кто еще сидел бы хотя бы под Windows'98, не говоря уж о почтенной старушке ДОС.
Ответить с цитированием
  (#15 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.12.2007, 22:40

Поищи по Форуму по лексеме "RS232" или "COM-порт", примеры работы с портом были.
Гм. Ну, кроме Паскаля под ДОС, есть еще Delphi с очень-очень похожим синтаксисом. А разбираться с программированием под Win32 все равно придется, - я, например, не знаю ни одного моего знакомого, кто еще сидел бы хотя бы под Windows'98, не говоря уж о почтенной старушке ДОС.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Com-портом Денис2000 WinAPI 4 05.12.2010 20:26
Работа с портом в паскале Нарик Pascal 0 03.11.2010 23:12
Работа с последовательным портом myshansun Сетевое программирование 8 15.08.2009 00:26
Работа с USB портом в Builder 6 SafSerg C++ Builder 16 29.09.2008 15:30
Работа с LPT портом в режиме DMA CBR_R Assembler 7 12.10.2006 20:02
Работа с Com-портом Chelentano Железо. Написание драйверов 5 01.03.2006 20:09
Работа с параллельным портом Poker Visual C++ 10 20.10.2005 10:29
Работа с ком-портом matvey1981 С/С++ 1 20.09.2005 17:09
Работа с СОМ портом Supermario C++ Builder 8 07.07.2005 22:20
Работа с LPT портом написание кода asterix C++ Builder 1 15.03.2004 16:41
Работа с LPT-портом sag C++ Builder 1 05.08.2003 01:49
Работа с LPT портом подключение его в программный код Anonymous C++ Builder 4 15.06.2003 03:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов