El pasado jueves día 29 de abril tuvimos una revisión de prácticas y expusimos esta presentación, que resume bien nuestros primeros pasos con los mismos. El enlace de descarga lo podéis encontrar aquí:
http://www.megaupload.com/?d=EMRYL0WV
Básicamente el trabajo hasta ahora ha consistido en montar los brazos (o alargar los que ya estaban montados para que tuvieran más alcance), familiarizarse con el funcionamiento de los brazos y la controladora de los servos y probar a enviar datos por el puerto serie del ordenador y así controlar el brazo. De momento hemos logrado controlar el brazo y enviar datos por el puerto serie tanto con una interfaz gráfica de usuario proporcionada por el fabricante como con el siguiente código para VisualC++:
////////////////////////////////////////////////////////////////////////////
// PuertoSerie.cpp: permite la transmisión de datos a través del puerto serie del PC.
//////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "windows.h"
#define
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hSerial;
LPCWSTR port2 = TEXT("COM5");
hSerial = CreateFile(port2,
GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if(hSerial==INVALID_HANDLE_VALUE){
if(GetLastError()==ERROR_FILE_NOT_FOUND){
//serial port does not exist. Inform user.
}
//some other error occurred. Inform user.
}
DCB dcbSerial = {0};
DCB dcbSerialParams = {0};
dcbSerial.DCBlength=sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
//error getting state
}
dcbSerialParams.BaudRate=CBR_19200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams)){
//error setting serial port state
}
COMMTIMEOUTS timeouts={0};
timeouts.ReadIntervalTimeout=50;
timeouts.ReadTotalTimeoutConstant=50;
timeouts.ReadTotalTimeoutMultiplier=10;
timeouts.WriteTotalTimeoutConstant=50;
timeouts.WriteTotalTimeoutMultiplier=10;
if(!SetCommTimeouts(hSerial, &timeouts)){
//error occureed. Inform user
}
int n = 5;
char szBuff[6] = {'>', '1', '1', 'a', 127};
DWORD dwBytesRead = 0;
if(!WriteFile(hSerial, szBuff, n, &dwBytesRead, NULL)){
//error occurred. Report to user.
}
return 0;
}