Buenas,
Por si acaso, he vuelto a reinstalar NetCommOCX, he comprobado que el código en Arduino era el correcto, he comprobado el puerto y la velocidad del mismo y sigue igual.
Lo hago correr en Excel 2003, el 2007 no lo tengo. Al abrir Excel habilito las macros y doy permiso a ActiveX. Entiendo que como al menos consigue leer al cerrar y abrir el puerto, la configuración de la conexión debe ser correcta, además reconoce sin problemas los comandos de NetCommOCX.
En cualquier caso, ya he conseguido hacer que funcione la aplicación que tenía en mente. Cada vez que pulse un botón, en Excel me aparezca una línea con la fecha y hora actual.
El único problema que sigo teniendo es que no lo puedo ejecutar en un archivo diferente al de tu potenciómetro en Excel, la macro debe estar además en la Hoja2, incluso si la pongo en otra hoja del mismo libro tampoco funciona ya que no reconoce los comandos de NetCommOCX, aunque en 'referencias' en VisualBasic si aparece marcada la librería 'MSComm32.ocx replacement'.
Envío el código por si pueden dar alguna pista:
- Pulsar botón.
- Leer pulsación en placa con (digitalRead).
- Enviar una señal (1) al PC (Serial.print).
- Desde Excel leer la señal (1) (NETComm2.InputData).
- En una tabla de Excel escribir la fecha y hh:mm:ss.
ARDUINO (1-2-3).
int ledPin = 13;
int inPin = 5;
int value = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop() {
value = digitalRead(inPin);
digitalWrite(ledPin, value);
if (value==HIGH) {
Serial.print (1);
delay(1000);
}
}
EXCEL (4-5)
Private Sub Abrir_puerto()
NETComm2.CommPort = 7
NETComm2.Settings = "9600, N, 8, 1"
NETComm2.RThreshold = 1
NETComm2.InputLen = 1
If NETComm2.PortOpen = True Then
NETComm2.PortOpen = False
End If
NETComm2.InBufferSize = 1024
If NETComm2.PortOpen = False Then
NETComm2.PortOpen = True
End If
While (NETComm2.InBufferCount <> 0)
trama = NETComm2.InputData
Wend
trama = ""
Hoja1.Application.EnableEvents = True
Sheets("Hoja1").Select
ActiveSheet.Range("b2").Activate
End Sub
Private Sub NETComm2_OnComm()
If NETComm2.CommEvent = NETComm_EV_RECEIVE Then
valor = NETComm2.InputData
ActiveCell.Value = Date
ActiveCell.Offset(0, 1).Range("a1").Select
ActiveCell.Value = Time
ActiveCell.Offset(1, -1).Range("a1").Select
End If
End Sub
Perdonad por la extensión del mensaje.
Saludos: