Вы не вошли.
гы...
сварочные инверторы говориш...... ну-ну
ссылок могу накидать. только толку то... без опыта- все сдохнет, 100%, и не раз, и не два.
у меня пока не дохло, тк еще не делал, поняв, что мат часть учить надо...
вот и учу, "тренируясь на кошках", ватт по 500....1000
----------
я использовал оптопару в качестве валкодера, но не сильно оно работало.
причина- разная чуствительносттть датчиков... как то с этим в мышиной микрухе боряться. но как.... протокол я нашел, еще бы раз найти.
найду- напишу
Вне форума
там чето есть
faqs.org.ru/hardw/periph/shpp.htm
Вне форума
Я тут страничку увидел
kravitnik.narod.ru/automatic.files/Weld0.html
Сварочные осцилляторы, хотелось бы мнение узнать.
Вне форума
faqs.org.ru/hardw/periph/shpp.htm
ссылка хорошая нам много всего, но самое интересное, я выкину это сюда может комуто когда - нибудь надо будет люди ловите
Q:
> Кто знает протокол мыши и клавиатуры?
A:
freq mousefaq.lzh
Описание протокола посылок мыши.
Для активизации мыши необходимо повесить обработчик на соответствующее
аппаратное прерывание, размаскировать это прерывание и установить в порту
биты питания мыши. Обработчик аппаратного прерывания обязан, помимо
обработки приходящих от мыши данных, также восстанавливать в порту биты
питания. Эти биты устанавливаются в порту базовый_адрес+4, который
называется Modem Control Register. Мне известны мыши, для питания которых
нужно выдавать в этот порт число 8, число 0Bh, а также мышь, которая в
зависимости от этого числа меняет свой режим работы (0B-MS, 08-PC). Драйвер
TRUEDOX обеспечивает это переключение по функциям A0 (PC mouse) и A1 (MS
mouse).
Есть два распространенных протокола обмена.
1. Microsoft Mouse.
Протокол обмена следующий: 1200,N71.
Обеспечивает информацию о 2 клавишах.
По каждому событию выдается пачка из 3 байт:
=+=======================
1| - 1 LB RB Y7 Y6 X7 X6
2| - 0 X5 X4 X3 X2 X1 X0
3| - 0 Y5 Y4 Y3 Y2 Y1 Y0
LB, RB - состояние клавиш, нажатая клавиша = 1. Остальные значащие биты-
относительное пеpемещение в дополнительном коде со времени последней
посылки.
Определить наличие мыши можно следующим образом: в порт xFC записать
число 8, подождать, а потом опять 0Bh. На запись числа 0Bh мышь реагирует
посылкой одного или нескольких байтов, среди которых обязательно должен
быть байт 4Dh (буква 'M' в таблице ASCII).
2. PC Mouse System
Протокол обмена следующий: 1200,N81
Обеспечивает информацию о 3 клавишах.
По каждому событию выдается пачка из 5 байт:
=+=======================
1| 1 0 0 0 0 LB MB RB
2|X7 X6 X5 X4 X3 X2 X1 X0
3|Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
4|X7 X6 X5 X4 X3 X2 X1 X0
5|Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
LB, MB, RB - состояние клавиш, нажатая клавиша = 0. Остальные значащие
биты- относительное пеpемещение со времени последней посылки в
дополнительном коде в двух частях, которые надо суммировать. Видимо,
это связано с тем, чтобы не использовать X7 и Y7, чтобы не пересекаться
с первым ключевым байтом. Способ определения наличия мыши в этом
режиме мне неизвестен.
....
Приложение A. Пpогpамма тестиpования мыши.
- - - - - - - - - - - - - - - - moutest.c - - - - - - - - - - - - - - - -
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#ifndef MY_TYPE
#define MY_TYPE 1
typedef unsigned char byte;
typedef unsigned int word;
typedef unsigned long dword;
#endif
#define F1 0x3B00
#define F2 0x3C00
#define F3 0x3D00
#define F4 0x3E00
#define F5 0x3F00
#define F6 0x4000
#define Escape 0x011B
#define VERSION "1.2"
word baseport; /* Базовый адрес COM-порта */
word intnum; /* Номер его прерывания */
byte mmode=3; /* Режим MS/PC */
word port3FC=0xB;
#define MBSIZE 32
byte mbuffer[MBSIZE+1];
byte *mbhead=mbuffer,*mbtail=mbuffer;
void FIbyte(byte b)
{ byte *tmp=mbtail+1;
if(tmp>=mbuffer+MBSIZE) tmp=mbuffer;
if(tmp!=mbhead)
{ *mbtail=b;mbtail=tmp;
}
}
byte FObyte(void)
{ byte *tmp;
if((tmp=mbhead)==mbtail) return 0xFF;
if(++mbhead>=mbuffer+MBSIZE) mbhead=mbuffer;
return *tmp;
}
/* Обработчик аппаратного прерывания */
void interrupt newhrd(void)
{ FIbyte(inportb(baseport));
outportb(baseport+4,port3FC); /* Set power */
/* Конец прерывания */
outport(0x20,0x20);
}
main(int argc,char **argv)
{ int pnum,i;
void interrupt (*oldint)(void);
byte intmask,b;
puts("Mouse tester V"VERSION" (c) Kulentsov A.V.");
if(argc<2)
{ puts( "Syntax: moutest <port_number>\n"
"Keys: F1 - Clear screen,\n"
" F2 - Microsoft mode,\n"
" F3 - PC Mouse System mode,\n"
" F4 - Set value to port xFC\n"
" F5 - Send byte to mouse"
);
_exit(1);
}
_AX=0;__int__(0x33);
if(_AX==0xFFFF)
{ puts("Mouse driver present.");
_exit(3);
}
pnum=(*argv[1])-'0';
if(pnum<1 || pnum>2)
{ puts("Incorrect port number (only 1 or 2 need).");
_exit(2);
}
if(pnum==1)
{ baseport=0x3F8;
intnum=0xC;
intmask=0x10;
}else
{ baseport=0x2F8;
intnum=0xB;
intmask=0x8;
}
/* Set handler to hardware interrupt */
oldint=getvect(intnum);
setvect(intnum,newhrd);
/* Init */
b=inportb(0x21)&~intmask;
delay(1);
outportb(0x21,b); /* 8259 enable */
delay(1);
if(inportb(baseport+1)&0xF8)
{ puts("Error?");
_exit(4);
}
outportb(baseport+3,0x80);
outport(baseport,0x60); /* 1200 */
delay(1);
outportb(baseport+3,2); /* N71 ( L..ppsbb) */
delay(1);
outportb(baseport+1,0);
delay(1);
outportb(baseport+4,1); /* Set DTR, /RTS for power */
/* На всякий случай */
delay(100);
outportb(baseport+4,port3FC); /* Set DTR, RTS, OUT for power */
outportb(baseport+1,1); /* Ints. on receive only */
clrscr();
redr:
while(mbhead!=mbtail)
cprintf("%02X ",FObyte());
in:
if(!bioskey(1)) goto redr;
switch(bioskey(0))
{ case Escape: goto quit;
case F1: clrscr();
cprintf("F2 - MS mode, F3 - PC mode, F4 - new mode, F5 - Send byte\r\n");
break;
case F2: port3FC=0xB;outportb(baseport+4,port3FC);mmode=3;
outportb(baseport+3,2); /* ( L..ppsbb) */
break;
case F3: port3FC=8;outportb(baseport+4,port3FC);mmode=5;
outportb(baseport+3,3); /* ( L..ppsbb) */
break;
case F4: cprintf("\r\nEnter new xFC value, xFB value:");
cscanf("%x %x",&port3FC,&i);outportb(baseport+4,port3FC);
outportb(baseport+3,i); /* ( L..ppsbb) */break;
case F5: cprintf("Send byte: ");
cscanf("%x",&i);outportb(baseport,i);cprintf("\r\n");
break;
}
goto redr;
quit:
outportb(baseport+1,0); /* No Interrupts */
outportb(0x21,inportb(0x21)|intmask); /* 8259 disable */
setvect(intnum,oldint);
return 0;
}
Вне форума
Плохо что программа не комментирована, ну нечего разберемся.
Я вот, что думаю. Первоначально я программу управления шаговыми двигателями я писал под самую старую машину(которая есть у нас - тройка) т.е. под DOS (писал в Borland Turbo C++ 3.0). Теперь пренесу ее на платформу Windows. Напишу ее на С++Builder 5.0
К чему я это???
К тому что Builder позволяет обрабатівать целій ряд событий мыши (да и нетолько Builder, а и Delphi, VB) такие как OnClick - щелчок мыши, OnDblClick - двойной щелчок, ну самое интересное событие это OnMouseMove - перемещение курсора мыши над компонентом, возможно распознование нажатой кнопки.
Так вот, делаем проект на весь экран, в обработчике события форму OnMouseMove отсеживаем приращение перемещения курсора, программно довольно просто. Тем более мы будем работать с программным драйвером мыши Windows, нам все равно что за мышь, 2 кнопочная, 3 - кнопочная, RS232 или PC/2, согласитесь єто здорово. Темболее приоритет от прирівания міши в системе Windows достаточно высокий.Программная часть закончена.
Теперь аппаратная. Раскрываем мышь к валу диска (с прорезями который) крепил (посредством того же пасика ) вал нашего шаговика, делам оборот расикаем приращение, еще пару оборотов
если все нормально, но на один оборот должно быть равное приращение. Допустим сделали один оборот шаговиком ШДА - 6 приращение курсора 50. Ага шагов у этого движка на оборот 360/22.5=18, а на один шаг приращение 50/18=3.125 но мы сможем отследить только целое число, значит нужно подобрать соответствующее передаточное число пасика.
Да проблемка может быть в том , что перемещение курсора мы можем отслеживать только когда он движится если упрется в "потолок" или "в бок" монитора то все. Значит передаточное число нужно выбирать и смотря на этот факт
Вне форума
чето я нифига не пойму, что вы сделать хотите...
подеключить все ресурсы вашего станка через порты компа?
имхо, низзя так делать, кроме этого ниче на компе не запустиш,проходили(система управления беспилотным самолетом)
думаю- нужен отдельный проц, который управляет всем этим, и соединяеться с компом достаточно медленным интерфейсом(тем же СОМ), не будет никаких проблем с временными интервалами и тд
Вне форума
подеключить все ресурсы вашего станка через порты компа?
А почемубы и нет.
Проблем с микроконтроллерами или там еще с чем нибудь таким нет.
А старых машин сейчас валом, бери клей и порядок, ставя микроконтроллер как посредника между ПК и станком, это хорошо.
Но по цене дешевле поставить обычную плату в lpt порт и делов то, я даттчик положения в тот же COM.
Насчет ничего на компе не запустишь, так комп для управления, а не для еще чего-то.
Я знаком с серьезными вещами такими как ADAM 5510 или PCI 1711.
Так что я неплохо представляю как распределяются ресурсы, и все такое.
Если на то пошло я вообще к Windows боюсь подключать станки.
QNX вот єто нормал.
А насчет
система управления беспилотным самолетом
это вы о чем
Вне форума
1) про посредника я и говорил.
2) в смысле о чем??
чтож тут не ясного - самолет без пилота. управляеться с земли по радиоканалу , на землю передает видео, на поворотной мачте с антеннами стоит модуль ВЧ, и МК который всем этим управляет, а на комп передает по 232 интерфейсу всю инфу, которая красиво рисуеться на мониторе
Вне форума
причем сдесь Дискавери?
делало 2е группы людей.
одна- самолет, другая- систему управления.
летало даже.
лично я делал антенное хозяйство и все ВЧ, а там 1.2 гига, и 450 мег, кстати
Вне форума
[ Сгенерировано за 0.038 сек, 7 запросов выполнено - Использовано памяти: 633.05 Кбайт (Пик: 683.41 Кбайт) ]