Code to convert Yokogawa messages to CAN bus

Dependencies:   USBHost mbed

Committer:
tomhillman
Date:
Wed Sep 09 12:48:29 2015 +0000
Revision:
0:1dc6b238aeb5
Basic version implemented on Converter for Makani Efficiency Testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomhillman 0:1dc6b238aeb5 1 #include "mbed.h"
tomhillman 0:1dc6b238aeb5 2 #include "USBHostSerial.h"
tomhillman 0:1dc6b238aeb5 3
tomhillman 0:1dc6b238aeb5 4 DigitalOut led(LED1);
tomhillman 0:1dc6b238aeb5 5 Serial pc(USBTX, USBRX);
tomhillman 0:1dc6b238aeb5 6
tomhillman 0:1dc6b238aeb5 7
tomhillman 0:1dc6b238aeb5 8 long i;
tomhillman 0:1dc6b238aeb5 9 long j;
tomhillman 0:1dc6b238aeb5 10 long k;
tomhillman 0:1dc6b238aeb5 11 long start;
tomhillman 0:1dc6b238aeb5 12 int l;
tomhillman 0:1dc6b238aeb5 13 long m;
tomhillman 0:1dc6b238aeb5 14 int myArray[8] = { 46, 47, 48, 52, 61, 62, 63, 67};
tomhillman 0:1dc6b238aeb5 15 int8_t sendTest[8];
tomhillman 0:1dc6b238aeb5 16 int main() {
tomhillman 0:1dc6b238aeb5 17 pc.printf("\nMain started \r\n");
tomhillman 0:1dc6b238aeb5 18 CAN can1(p30, p29);
tomhillman 0:1dc6b238aeb5 19 can1.frequency(500000);
tomhillman 0:1dc6b238aeb5 20 USBHostSerial serial;
tomhillman 0:1dc6b238aeb5 21
tomhillman 0:1dc6b238aeb5 22 char buf2[1024];
tomhillman 0:1dc6b238aeb5 23 while(1) {
tomhillman 0:1dc6b238aeb5 24
tomhillman 0:1dc6b238aeb5 25 pc.printf("Start\r\n");
tomhillman 0:1dc6b238aeb5 26
tomhillman 0:1dc6b238aeb5 27
tomhillman 0:1dc6b238aeb5 28 // try to connect a serial device
tomhillman 0:1dc6b238aeb5 29 while(!serial.connect())
tomhillman 0:1dc6b238aeb5 30 {
tomhillman 0:1dc6b238aeb5 31 pc.printf("Trying to connect \r\n");
tomhillman 0:1dc6b238aeb5 32 wait(1);
tomhillman 0:1dc6b238aeb5 33 }
tomhillman 0:1dc6b238aeb5 34
tomhillman 0:1dc6b238aeb5 35 pc.printf("Connected \r\n");
tomhillman 0:1dc6b238aeb5 36 wait(1);
tomhillman 0:1dc6b238aeb5 37 LPC_UART0->FCR |= 0x06;
tomhillman 0:1dc6b238aeb5 38 wait(1);
tomhillman 0:1dc6b238aeb5 39 while (1) {
tomhillman 0:1dc6b238aeb5 40 i = 0;
tomhillman 0:1dc6b238aeb5 41 int test = 0;
tomhillman 0:1dc6b238aeb5 42 led=!led;
tomhillman 0:1dc6b238aeb5 43 serial.flush();
tomhillman 0:1dc6b238aeb5 44 wait(0.1);
tomhillman 0:1dc6b238aeb5 45
tomhillman 0:1dc6b238aeb5 46 for(m=0;m<8;m++){
tomhillman 0:1dc6b238aeb5 47 i = 0;
tomhillman 0:1dc6b238aeb5 48 serial.flush();
tomhillman 0:1dc6b238aeb5 49 wait(0.1);
tomhillman 0:1dc6b238aeb5 50 serial.printf("NUM:NORM:VAL? %d\r\n", myArray[m]); // send SCPI command // just \n works
tomhillman 0:1dc6b238aeb5 51 wait(0.1);
tomhillman 0:1dc6b238aeb5 52
tomhillman 0:1dc6b238aeb5 53 test = 1;
tomhillman 0:1dc6b238aeb5 54 while (i<=30) {
tomhillman 0:1dc6b238aeb5 55 test = serial.available();
tomhillman 0:1dc6b238aeb5 56 buf2[i] = serial.getc();
tomhillman 0:1dc6b238aeb5 57 pc.printf("%c", buf2[i], test);
tomhillman 0:1dc6b238aeb5 58 i++;
tomhillman 0:1dc6b238aeb5 59 }
tomhillman 0:1dc6b238aeb5 60 serial.flush();
tomhillman 0:1dc6b238aeb5 61
tomhillman 0:1dc6b238aeb5 62 j = 0;
tomhillman 0:1dc6b238aeb5 63
tomhillman 0:1dc6b238aeb5 64
tomhillman 0:1dc6b238aeb5 65 for(j=0;j<i;j++){
tomhillman 0:1dc6b238aeb5 66 if(buf2[j]==0x23){ // look for "#" that marks start of data
tomhillman 0:1dc6b238aeb5 67 break;
tomhillman 0:1dc6b238aeb5 68 }
tomhillman 0:1dc6b238aeb5 69 }
tomhillman 0:1dc6b238aeb5 70 start = j+7;
tomhillman 0:1dc6b238aeb5 71 i = start-1;k=1;
tomhillman 0:1dc6b238aeb5 72 pc.printf("Item(%d): 0x%X.%X.%X.%X ",myArray[m],buf2[i],buf2[i+1],buf2[i+2],buf2[i+3]);
tomhillman 0:1dc6b238aeb5 73
tomhillman 0:1dc6b238aeb5 74 for(l=0;l<4;l++){
tomhillman 0:1dc6b238aeb5 75
tomhillman 0:1dc6b238aeb5 76 sendTest[l] = (int8_t)buf2[i+l];
tomhillman 0:1dc6b238aeb5 77 }
tomhillman 0:1dc6b238aeb5 78
tomhillman 0:1dc6b238aeb5 79 if(can1.write(CANMessage((1024+m+1), (const char *) &sendTest[0], 8))){pc.printf(" Can Sent..\r\n");}
tomhillman 0:1dc6b238aeb5 80 //can1.write(CANMessage((1024+m+1), (const char *) &sendTest[0], 8));
tomhillman 0:1dc6b238aeb5 81
tomhillman 0:1dc6b238aeb5 82
tomhillman 0:1dc6b238aeb5 83
tomhillman 0:1dc6b238aeb5 84 }
tomhillman 0:1dc6b238aeb5 85
tomhillman 0:1dc6b238aeb5 86 // if device disconnected, try to connect it again
tomhillman 0:1dc6b238aeb5 87 if (!serial.connected()){
tomhillman 0:1dc6b238aeb5 88 pc.printf("Connection Lost!\r\n");
tomhillman 0:1dc6b238aeb5 89 break;
tomhillman 0:1dc6b238aeb5 90 }
tomhillman 0:1dc6b238aeb5 91
tomhillman 0:1dc6b238aeb5 92 wait(1);
tomhillman 0:1dc6b238aeb5 93 }
tomhillman 0:1dc6b238aeb5 94 }
tomhillman 0:1dc6b238aeb5 95
tomhillman 0:1dc6b238aeb5 96
tomhillman 0:1dc6b238aeb5 97
tomhillman 0:1dc6b238aeb5 98 }