Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Побитовое программирование символьных устройств
 
 автор: dump   (05.12.2011 в 11:45)   письмо автору
 
 

Как известно, символьные устройства осуществляют ввод-вывод посимвольно, т.е. побайтно. К примеру, принтер, подключённый через com или lpt порт, принимает данные и интсрукции побайтно. А что если подавать ему побитно? Возможно ли это? Например, отправить полтора байта через com-порт?

  Ответить  
 
 автор: cheops   (05.12.2011 в 13:18)   письмо автору
 
   для: dump   (05.12.2011 в 11:45)
 

Сначала давайте без LPT-порта. Да можно, только все-равно придется использовать 2 байта... тут штука в том, что байт - это 8 бит, размер регистра 8-битного компьютера. Потом появились 16-битные компьютеры, т.е. их регистры были уже 16-бит - 2 байта (или слово), потом появились 32-битные компьютеры - размер их регистра 4 байта (двойное слово). Т.е. мало того, что вы 2 байта посылаете, вместо 1.5, так в компьютере они путешествуют в виде пакета из 4 байт, более того, зачастую и в exe-коде 1.5 байта будут храниться с дополнительными 2.5 пустыми байтами - так называемое выравнивание границы, чтобы процессор быстрее данные обрабатывал. Т.е. все эти пересылки ограничиваются процессором и размером его регистра - записать вы туда можете что угодно, хоть один бит, но система воспринимает размер регистра как базовый. Поэтому мы и говорим о 32-битных и 64-битных системах - это минимальные объемы, если вы используете меньшие, вы проигрываете в скорости.

PS А возвращаясь именно к LPT-порту, если мне память не изменяет - он же параллельный? Т.е. для данных используется 8 отдельных проводов (остальные обслуживающие), каждый из которых соответствует отдельному биту, ни что не мешает вам не посылать по 7 проводам сигнал, а посылать только по одному - это будет передача одного бита. Более того полтора байта одновременно послать не получится, он за раз только 1 байт принимает, но информацию, заключенную в 1.5 байта - вполне, только это будет 2 отдельных байта, переданные в два разных момента времени. Тут о половине байта бессмысленно говорить - у него байт физически задан проводами.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования