Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface MbedJSONValue SDFileSystem mbed-rtos mbed
Fork of Gate_Aidik_FRDM_v2 by
Revision 2:e870bcd7e63b, committed 2016-10-20
- Comitter:
- irsanjul
- Date:
- Thu Oct 20 03:42:29 2016 +0000
- Parent:
- 0:fbb75122015f
- Commit message:
- new gate aidik program
Changed in this revision
| MbedJSONValue.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MbedJSONValue.lib Thu Oct 20 03:42:29 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/Tigaresi/code/MbedJSONValue/#4d8ba9af46f5
--- a/main.cpp Mon Aug 22 09:27:26 2016 +0000
+++ b/main.cpp Thu Oct 20 03:42:29 2016 +0000
@@ -1,7 +1,10 @@
#include "mbed.h"
#include "EthernetInterface.h"
#include "SDFileSystem.h"
-#include <string>
+#include "MbedJSONValue.h"
+#include <sstream>
+#include <iostream>
+#include <fstream>
#define IP_CONF_PORT 50004
@@ -20,17 +23,15 @@
Serial dbg(USBTX, USBRX);
Serial pc(PTC17, PTC16);
-char IP[16], SUBNET[16], GATEWAY[16], MCAST[16];
-char PortListen[6], PortSend[6], PortHeartB[6];
-char IDX[4];
-char Baud[6];
+char IP[16], SUBNET[16], GATEWAY[16], MCAST[16], IDX[5];
+int PortListen, PortSend, PortHeartB;
int BAUD = 19200;
int width, TICK = 0;
unsigned char ID[8], idx, idy, id_addr = 0x33, ix, er_tmp1 = 0, er_tmp2 = 0,
sprmt = 0; // state = 1,
char text[26], ch, rx_buff[6], tx_buff[7], //86
- hex[17] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
+ _hex[17] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
'C', 'D', 'E', 'F' }; //,
/*Contoh format data
@@ -52,7 +53,7 @@
1, idle
2, stdby/ idle
3, merah/sopir
- 4, bitu/ MT
+ 4, biru/ MT
5, buka gate
format ipconfig
@@ -149,78 +150,90 @@
break;
}
}
-void mbed_config_init() {
- char chr[256];
- int ilx = 0;
- unsigned char n = 0, x = 0;
- FILE *fp = fopen("/sd/IPCONF.TXT", "r");
- if (fp == NULL)
- dbg.printf("Error opening file");
- else {
- //dbg.printf("File Exist!\r\n");
- do {
- ilx++;
- chr[ilx] = fgetc(fp);
- //dbg.printf("%c",chr[ilx]);
- } while (chr[ilx] != '$');
- fclose(fp);
+
+string open_file(const char *location)
+{
+ string rtn = "\0";
+
+// dbg.printf("OPEN FILE %s\r\n", location);
+ ifstream stream(location, std::ifstream::binary);
+
+ if ( !stream.is_open() ) {
+ dbg.printf("File Opening Error\n\r");
+ stream.close();
+ }
+ else
+ {
+ stream.seekg(0,stream.end);
+ int len = stream.tellg();
+ stream.seekg(0,stream.beg);
+
+ char *_stream = new char [len];
+
+ stream.read(_stream,len);
+ _stream[len] = '\0';
+
+ rtn += _stream;
+ stream.close();
+ delete [] _stream;
}
- ilx = 1;
- do {
- if (chr[ilx] == '#') {
- ilx = ilx + 1;
- n = 1;
- dbg.printf("Start file\r\n");
- } else if (chr[ilx] == ',') {
- n++;
- x = 0;
- ilx = ilx + 2;
+
+ return rtn;
+}
+
+bool mbed_config_init()
+{
+ dbg.printf("Masuk mbed config init\r\n");
+
+ MbedJSONValue config_json;
+ string dataSet = open_file("/sd/IPCONF.TXT");
+ dbg.printf("isi file :\r\n%s\r\n", dataSet.c_str());
+
+ if(dataSet.size() > 1)
+ {
+ string err;
+ parse(config_json, dataSet.c_str(), dataSet.c_str() + strlen(dataSet.c_str()), &err);
+ if(err.size() > 0)
+ {
+ dbg.printf("res error? %s\r\n", err.c_str());
+ return false;
+ }
+ else
+ {
+ const char *ip_temp = config_json["IP"].get<string>().c_str();
+ const char *sub_temp = config_json["SUBNET"].get<string>().c_str();
+ const char *gate_temp = config_json["GATEWAY"].get<string>().c_str();
+ const char *mcast_temp = config_json["MCAST"].get<string>().c_str();
+ const char *idx_temp = config_json["IDX"].get<string>().c_str();
+ PortListen = config_json["PortListen"].get<int>();
+ PortSend = config_json["PortSend"].get<int>();
+ PortHeartB = config_json["PortHeartBit"].get<int>();
+ BAUD = config_json["BAUD"].get<int>();
+
+ sprintf(IP,"%s", ip_temp);
+ sprintf(SUBNET, "%s", sub_temp);
+ sprintf(GATEWAY, "%s", gate_temp);
+ sprintf(MCAST, "%s", mcast_temp);
+ sprintf(IDX, "%s", idx_temp);
+
+ dbg.printf("IP Device = %s\r\n", IP);
+ dbg.printf("Subnet = %s\r\n", SUBNET);
+ dbg.printf("Gateway = %s\r\n", GATEWAY);
+ dbg.printf("Multicast IP = %s\r\n", MCAST);
+ dbg.printf("Server to mBed = %d\r\n", PortListen);
+ dbg.printf("mBed to Multicast = %d\r\n", PortSend);
+ dbg.printf("HeartBeat Port = %d\r\n", PortHeartB);
+ dbg.printf("device IDX = %s\r\n", IDX);
+ dbg.printf("Serial Baudrate = %d\r\n", BAUD);
+
+ return true;
}
- switch (n) {
- case 0:
- break;
- case 1:
- IP[x] = chr[ilx];
- break;
- case 2:
- SUBNET[x] = chr[ilx];
- break;
- case 3:
- GATEWAY[x] = chr[ilx];
- break;
- case 4:
- MCAST[x] = chr[ilx];
- break;
- case 5:
- PortListen[x] = chr[ilx];
- break;
- case 6:
- PortSend[x] = chr[ilx];
- break;
- case 7:
- PortHeartB[x] = chr[ilx];
- break;
- case 8:
- IDX[x] = chr[ilx];
- break;
- case 9:
- Baud[x] = chr[ilx];
- break;
- }
- x++;
- ilx++;
- } while (chr[ilx] != '$');
-
- dbg.printf("IP Device = %s\r\n", IP);
- dbg.printf("Subnet = %s\r\n", SUBNET);
- dbg.printf("Gateway = %s\r\n", GATEWAY);
- dbg.printf("Multicast IP = %s\r\n", MCAST);
- dbg.printf("Server to mBed = %s\r\n", PortListen);
- dbg.printf("mBed to Multicast = %s\r\n", PortSend);
- dbg.printf("HeartBeat Port = %s\r\n", PortHeartB);
- dbg.printf("device IDX = %s\r\n", IDX);
- dbg.printf("Serial Baudrate = %s\r\n", Baud);
- BAUD = atoi(Baud);
+ }
+ else
+ {
+ dbg.printf("Config is not found\r\n");
+ return false;
+ }
}
unsigned char reset(void) {
@@ -288,11 +301,11 @@
}
for (idx = 0; idx < 8; idx++) {
- text[((7 - idx) * 2) + 7] = hex[ID[idx] & 0x0f];
- text[((7 - idx) * 2) + 6] = hex[(ID[idx] >> 4) & 0x0f];
+ text[((7 - idx) * 2) + 7] = _hex[ID[idx] & 0x0f];
+ text[((7 - idx) * 2) + 6] = _hex[(ID[idx] >> 4) & 0x0f];
}
- std::string str;
- std::size_t found1;
+ string str;
+ size_t found1;
str += text;
found1 = str.find("FFFFFFFFFF");
@@ -326,7 +339,7 @@
hb_buff[2] = IDX[2];
hb_buff[3] = IDX[3];
- multi.set_address(MCAST, atoi(PortHeartB));
+ multi.set_address(MCAST, PortHeartB);
hb++;
switch (std) {
@@ -396,14 +409,14 @@
tx_buff[4] = 'P';
tx_buff[5] = '0';
tx_buff[6] = '0';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
} else if (rx_buff[1] == 'R') {
tx_buff[4] = 'P';
tx_buff[5] = '0';
tx_buff[6] = '0';
sprmt = 0;
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
eMTy(0, 0);
Sopir(0, 0);
@@ -415,19 +428,14 @@
return 0;
}
-void write_config(char buff[90]){
- FILE *fp = fopen("/sd/IPCONF.TXT", "w");
- fprintf(fp, buff);
- fclose(fp);
-}
-
int set_IP() {
char ptr_data;
//server.set_address(SERVER,ER_SEND_PORT);
//char print_rx_buff[128];
- char conf_buff[1024] = { 0 }, print_init[20] = { 0x1b, 0x40, 0x1b, 0x54,
- 0x1b/*,0x57*/, 0x00, 0x1b, 0x77, 0x00, 0x12, 0x1b, 0x43, 0x00, 0x06,
- 0x1b, 0x6c, 0x01, 0x12 };
+// char conf_buff[1024] = { 0 }, print_init[20] = { 0x1b, 0x40, 0x1b, 0x54,
+// 0x1b/*,0x57*/, 0x00, 0x1b, 0x77, 0x00, 0x12, 0x1b, 0x43, 0x00, 0x06,
+// 0x1b, 0x6c, 0x01, 0x12 };
+ char conf_buff[1024] = { 0 };
int n = ip_conf.receiveFrom(server, conf_buff, sizeof(conf_buff));
if (n >= 0) {
//printf("Packet from \"%s\": %s\n", server.get_address(), conf_buff);
@@ -476,19 +484,17 @@
//sock.close(true);
} else if (conf_buff[1] == 'W') {
Sleep = 0;
- //sock.bind(atoi(PortListen));
+ //sock.bind(PortListen);
}
- } else if (conf_buff[0] == '#') {
- write_config(conf_buff);
} else if (conf_buff[0] == 0x0f) {
- dbg.printf("%s", print_init);
+ //dbg.printf("%s", print_init);
pc.printf("%s", conf_buff);
ptr_data = *strchr(conf_buff, 0x1d);
if (ptr_data != NULL) {
tx_buff[4] = 'D';
tx_buff[5] = '0';
tx_buff[6] = '1';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("Printer Done\r\n");
}
@@ -517,15 +523,15 @@
void Set_IP_Manual()
{
- sprintf(IP,"192.168.0.14");
+ sprintf(IP,"192.168.0.101");
sprintf(SUBNET, "255.255.255.0");
sprintf(GATEWAY, "192.168.0.1");
sprintf(MCAST, "224.1.1.8");
- sprintf(PortListen, "50007");
- sprintf(PortSend, "50001");
- sprintf(PortHeartB, "50003");
- sprintf(IDX, "GI01");
- BAUD = 19200;
+ PortListen = 50007;
+ PortSend = 50001;
+ PortHeartB = 50003;
+ sprintf(IDX, "GO01");
+ BAUD = 38400;
dbg.printf("IP Device = %s\r\n", IP);
dbg.printf("Subnet = %s\r\n", SUBNET);
@@ -540,12 +546,16 @@
int main(void) {
mkdir("/sd/", 0777);
- mbed_config_init(); // Digunakan jika setting ip melalui micro sd
- Set_IP_Manual(); // Digunakan jika setting ip secara manual
+ bool card_ready = mbed_config_init(); // Digunakan jika setting ip melalui micro sd
+ if(!card_ready)
+ {
+ dbg.printf("Set Config via hard code\r\n");
+ Set_IP_Manual(); // Digunakan jika setting ip secara manual
+ }
- dbg.printf("\r\nPrinter Baud = %d\r\n",BAUD);
+ dbg.printf("Printer Baud = %d\r\n",BAUD);
pc.baud(BAUD);
- dbg.baud(BAUD);
+ dbg.baud(9600);
dbg.printf("System Start \r\n");
EthernetInterface eth;
@@ -560,7 +570,7 @@
ip_conf.set_blocking(false, 0);
server.set_address(MCAST, 50002);
- sock.bind(atoi(PortListen));
+ sock.bind(PortListen);
sock.set_blocking(false, 0);
@@ -584,7 +594,7 @@
tx_buff[4] = 'R';
tx_buff[5] = '0';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
eMTy(ijo, 0);
@@ -625,7 +635,7 @@
text[5] = 'M';
}
if (cmpstr(text, "F") < 10) {
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, text, sizeof(text));
sndrcv = 1;
}
@@ -645,7 +655,7 @@
break;
}
case 1: {
- sock.bind(atoi(PortListen));
+ sock.bind(PortListen);
int n = sock.receiveFrom(server, rx_buff, sizeof(rx_buff));
if (n != 0) {
@@ -658,7 +668,7 @@
tx_buff[4] = 'O';
tx_buff[5] = 'K';
tx_buff[6] = '!';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("Data S Valid..\r\n");
} else if ((rx_buff[1] == 'A') && (rx_buff[3] == '3')) {
@@ -671,7 +681,7 @@
tx_buff[4] = 'O';
tx_buff[5] = 'K';
tx_buff[6] = '!';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("Data S Not Valid, but M valid, reset!!!!\r\n");
} else if ((rx_buff[1] == 'V') && (rx_buff[3] == '4')) {
@@ -686,7 +696,7 @@
tx_buff[4] = 'O';
tx_buff[5] = 'K';
tx_buff[6] = '!';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("Data M Valid..\r\n");
} else if ((rx_buff[1] == 'A') && (rx_buff[3] == '4')) {
@@ -700,7 +710,7 @@
tx_buff[4] = 'O';
tx_buff[5] = 'K';
tx_buff[6] = '!';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("Data M Not Valid, refresh!!!!\r\n");
} else if (rx_buff[1] == 'R') {
@@ -711,7 +721,7 @@
tx_buff[4] = 'O';
tx_buff[5] = 'K';
tx_buff[6] = '!';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
dbg.printf("All Data Not Valid, reset!!!!\r\n");
}
@@ -738,7 +748,7 @@
tx_buff[4] = 'X';
tx_buff[5] = '0';
tx_buff[6] = '1';
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
dbg.printf("Printer Error\r\n");
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
} else
@@ -751,7 +761,7 @@
tx_buff[5] = '0';
tx_buff[6] = '1';
dbg.printf("Printer Fixed\r\n");
- multi.set_address(MCAST, atoi(PortSend));
+ multi.set_address(MCAST, PortSend);
sock.sendTo(multi, tx_buff, sizeof(tx_buff));
} else
er_tmp2 = 5;
