no, lo que necesito es escribir letras como si fuera un teclado
por ejemplo en la PC abrir un archivo de Word y poder escribir "HOLA" desde la All-in-one
forzozamente tiene que ser enviando los caracteres por el puerto COM y que la PC los reciba por PS/2
encontre algo que me podria servir
http://www.todopic.com.ar/foros/index.php?topic=11910.0
lamentablemente la documentacion no se encuentra y no puedo ver diagramas :/
Gracias
-----------------
encontre esta tabla de datos
http://www.computer-engineering.org/ps2keyboard/scancodes2.html
la cosa estaria asi, con un arduino leo el puerto COM
el arduino se encargara de simula el puerto ps/2 mediante salidas digitales
mi pregunta aqui seria como emular el mensaje por ps/2
el puerto tiene dos pins (Clock y Data)
Código:
int data = 2
int clock = 3
char lectura = 0
void setup(){
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
Serial.begin(9600)
}
void loop(){
if(Serial.avaible()){
lectura = Serial.read();
if(lectura == a || lectura == A){
[U][B] ESTO ES LO QUE NO SE COMO HACER[/B][/U]
}
}
}
dice que la letra A se representa en hexadecimal con "1C" que convertido a binario seria "00011100"
entonces tendria que hacer la rutina
Código:
digitalWrite(data, LOW);
delay(40); // ejemplo
digitalWrite(data, LOW);
delay(40);
digitalWrite(data, HIGH);
delay(40);
digitalWrite(data, HIGH);
delay(40);
digitalWrite(data, HIGH);
delay(40);
digitalWrite(data, LOW);
delay(40);
digitalWrite(data, LOW);
delay(40);
digitalWrite(data, LOW);
delay(40);
pero y el pin de CLOCK??
como lo tengo que emular?
----------------------------------------
tengo una respuesta aproximada
Código:
output_high(clock);
output_high(data);
delay_us(40);
output_high(clock);
output_low(data);
delay_us(40);
output_low(clock);
output_low(data);
delay_us(40);
salida =1;
do
{
output_high(clock);
output_bit(data, letra&0x01);
delay_us(40);
output_low(clock);
output_bit(data, letra&0x01);
delay_us(40);
if ((letra & 0x01) == 0x01) {unos++;}
letra = letra>>1;
salida++;
}while (salida < 9);
output_high(clock); ////// P
output_bit(data, unos&0x01);
delay_us(40);
output_low(clock);
output_bit(data, unos&0x01);
delay_us(40);
output_high(clock); ////// STOP
output_high(data);
delay_us(40);
output_low(clock);
output_high(data);
delay_us(40);
output_high(clock); ////// FIN
output_high(data);
esa es la rutina para representar un caracter enviandolo por ps/2
la del principio es fija
luego se envian los 8 bits uno por uno dos veces cada uno con el pin reloj prendiendo y apagando
alguien que pueda explicarme la rutina del final de envio del caracter?
esa no la entiendo