Com порт!
Всякие там порты типа 3F9h и т.д. мне известны, а как с ентим работать не совсем ясно...
Т.е. проще говоря нужны стандартные(под DOS) комманды языка Си (++ не катит)!
Т.е. проще говоря нужны стандартные(под DOS) комманды языка Си
Не бывает таких! В стандартах Си(как и Си++) нет встроенных операторов/функций работы с оборудованием. А всякие там outport() или inport() - это нестандартизированная самодеятельность фирм выпускающих компиляторы. Следовательно - читайте доки к вашему компилеру.
Или делайте под винду через стандартный WinAPI.
Какими командами можно обратиться к COM порту (чтение\запись и т.д.)?
Всякие там порты типа 3F9h и т.д. мне известны, а как с ентим работать не совсем ясно...
Т.е. проще говоря нужны стандартные(под DOS) комманды языка Си (++ не катит)!
//
FILE *f;
char ch;
f = fopen ("com1", "rb");
ch = fgetc (f);
fclose (f);
//
По-моему самые стандартные комманды :)
//
FILE *f;
char ch;
f = fopen ("com1", "rb");
ch = fgetc (f);
fclose (f);
//
По-моему самые стандартные комманды :)
А по прерываниям как?
ЗЫ Если блюсти стандарты, то нужно делать вставке на asm-е
А по прерываниям как?
ЗЫ Если блюсти стандарты, то нужно делать вставке на asm-е
А что на счет команд outp и т.д.? Как я понял они работают почти на аппаратном уровне, посылам в определенный порт определенный бит(байт)!
Вот пример из программки зажинающей леды (лампочки) на клавиатуре! Немного переделанный пример из одной книги...
#include <conio.h>
void main(void)
{
outp(0x60,0xed); //??? "используйте команду 0EDh" ???
outp(0x60,7); //посылаем в порт 60h байт условно означающий зажечь все леды
printf("Прес эни кей");
getch();
outp(0x60,0xed);
outp(0x60,0);
}
Вопрос в том, можно ли нечто подобное использовать для работы с COM?
А что на счет команд outp и т.д.? Как я понял они работают почти на аппаратном уровне, посылам в определенный порт определенный бит(байт)!
Вот пример из программки зажинающей леды (лампочки) на клавиатуре! Немного переделанный пример из одной книги...
#include <conio.h>
void main(void)
{
outp(0x60,0xed); //??? "используйте команду 0EDh" ???
outp(0x60,7); //посылаем в порт 60h байт условно означающий зажечь все леды
printf("Прес эни кей");
getch();
outp(0x60,0xed);
outp(0x60,0);
}
Вопрос в том, можно ли нечто подобное использовать для работы с COM?
На самом деле это макрос для реализации соответсвующих команд asm-a. В принципе их можно использовать, и работают они хорошо, но как метко заметил pacific_7 не стандарт. У ms c и у borland c они по моему отличаются.
Если нужно просто переслать "пару байтов", то зачем с прерываниями заморачиваться? К тому же под NT-виндами никакие шутки с outp () не прокатят и в железный порт ничего не выдастся.
Вопрос был про DOS
Вопрос был про DOS
Ну, дык, если кто-то еще в чистом досе работает... то большой ему привет! :)
Ну, дык, если кто-то еще в чистом досе работает... то большой ему привет! :)
Препод у меня работает как ДОС... но это уже оффтоп!!!