чтение порта устройства
есть проблема,
есть комп, в нем вставили плату, которая через оптический датчик будет ловить сколько коробок прошло по контейнеру, нужно считать из порта(по адресу, к примеру 300) все регистры(их 8), ну типа так:
readPort(0x300),readPort(0x301),readPort(0x302),...
кто знает как обрачаться к определенному порту устройства, и читать данные...
когда делаю вот так
unsigned char ReadReg(unsigned short reg) {
unsigned char data;
_asm {
mov dx,reg
in al,dx
mov data,al
}
return(data);
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char value;
unsigned short port = 300;
ReadReg(300);
return 0;
}
то вылетает вот что :
Unhandled exception at 0x004113b2 in ReadPort.exe: 0xC0000096: Privileged instruction.
Кто знает, помогите пожалуйста, запарился уже.
Среда разработки C++ Builder 6
Заранее спасибо.
Ну попробй sti/cli внутри ReadReg делать.
Это тебе говорит, что ты под лохом сидишь, Пробуй тоже самое только под админом (но в Винде гарантии нет, что позволит). В юнихе должно катить (под рутом)
либо (под виндой) суй прогу свою в службы с правами драйвера (SERVICE_KERNEL_DRIVER или что-нить такое) и описывай интерфейсы для общения с другими прогами... Или просто используй юних или свою ось :) Тупо Grub и ядро, которое будет тебе подсчитывать твои товары - суешь дискетку и не вынимаешь :)