#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include "../can200-api/can200-api.h"
{
int i;
printf("Receive frame:\n");
{
printf(
"Standart ID: %.3Xh\n", (
unsigned short)frame->
sID);
}
else
{
printf(
"Extended ID: %x\n", frame->
extID);
}
printf(
"RTR: %.1d\n", frame->
RTR);
printf(
"DLC: %.1d\n", frame->
DLC);
for (i = 0; i < frame->
DLC && i < 8; i++)
{
printf(
"Databyte %d: %.2Xh\n",i,(
unsigned char)frame->
DataByte[i]);
}
}
int main(int argc, char *argv[])
{
int device;
int channel;
int speed;
int count;
HANDLE hCan;
HANDLE hEvent;
int result;
SECURITY_ATTRIBUTES sa4Event;
int num_channel;
if (argc < 4)
{
printf("Use receive <number_device> <channel> <speed>\n");
return -1;
}
{
printf("Error CAN200_GetNumberDevice (%d, last error = %u)\n", result, GetLastError());
return -1;
}
device = atoi(argv[1]);
if (device < 0 || device >= count)
{
printf("CAN-200PCI(e) #%d not found\n", device);
return -1;
}
channel = atoi(argv[2]);
speed = atoi(argv[3]);
{
printf("Unexpected speed #%d (expected %d or %d or %d or %d or %d or %d or %d or %d)\n", speed,
return -1;
}
if (INVALID_HANDLE_VALUE == hCan)
{
printf("Error open CAN-200 device # %d (last error = %u)\n", device, GetLastError());
exit(-1);
}
{
printf("Error CAN200_GetConfig (%d, last error = %u)\n", result, GetLastError());
return -1;
}
{
printf("Error CAN200_GetNumChannel (%d, last error = %u)\n", result, GetLastError());
return -1;
}
if ((channel < 1) || (channel > num_channel))
{
printf("Unexpected channel #%d (expected %d-%d)\n", channel, 1, num_channel);
return -1;
}
printf(
"Board: %s\n", conf.
szName);
printf(
"Serial num.: %s\n", conf.
szSN);
printf(
"Channel: %Xh\n", conf.
wPorts[channel - 1]);
printf(
"IRQ: %.2d\n\n", conf.
wIRQ);
{
printf("Error CAN200_SetWorkMode (%d, last error = %u)\n", result, GetLastError());
return -1;
}
{
printf("Error CAN200_P_SetInputFilter (%d, last error = %u)\n", result, GetLastError());
return -1;
}
{
printf("Error CAN200_SetCANSpeed (%d, last error = %u)\n", result, GetLastError());
return -1;
}
{
printf("Error CAN200_SetInterruptSource (%d, last error = %u)\n", result, GetLastError());
return -1;
}
sa4Event.nLength = sizeof(sa4Event);
sa4Event.lpSecurityDescriptor = NULL;
sa4Event.bInheritHandle = TRUE;
hEvent = CreateEvent(&sa4Event, TRUE, FALSE, NULL);
if (NULL == hEvent)
{
printf("CreateEvent failed (last error = %u)\n", GetLastError());
return -1;
}
{
printf("Error CAN200_DefEvent (%d, last error = %u)\n", result, GetLastError());
CloseHandle(hEvent);
return -1;
}
do
{
{
printf("Error CAN200_GetEventData (%d, last error = %u)\n", result, GetLastError());
CloseHandle(hEvent);
return -1;
}
{
printf("Error CAN200_SetDriverMode (%d, last error = %u)\n", result, GetLastError());
CloseHandle(hEvent);
return -1;
}
printf("Waiting....\n");
while (!_kbhit())
{
switch (WaitForSingleObject(hEvent, 200))
{
case WAIT_OBJECT_0:
{
ResetEvent(hEvent);
printf("We got event\n");
do
{
{
printf("Error CAN200_GetEventData (%d, last error = %u)\n", result, GetLastError());
CloseHandle(hEvent);
return -1;
}
printf(
"IntrID = %x\n", evd.
IntrID);
{
}
break;
}
case WAIT_TIMEOUT:
default:
{
continue;
}
}
}
{
printf("Error CAN200_DefEvent (%d, last error = %u)\n", result, GetLastError());
CloseHandle(hEvent);
return -1;
}
CloseHandle(hEvent);
return 0;
}