If there is an input change from ADAM, we send it to the browser.
We are going to add or modify the following from WSAdam.ino.
omit...
char rx485Ln[8]; char preAdamPollRcv[2] = { 0, 0 }; int rx485ix; char bitMap[8]; byte wsConnect; long lastPollTime; void XsfAdamPollData(void); void AdamPoll(void); void AdamReceiver(void); void hexToBit(char hex, int p);
omit...
void setup() { Serial.begin(9600); Soft485.begin(9600); pinMode(DE485, OUTPUT); wsConnect = 0; lastPollTime = 0; Ethernet.begin(mac, ip);
omit...
void loop() { wsServer.listen(); if((millis() - lastPollTime) >= 500) AdamPoll(); // Poll every 0.5 seconds AdamReceiver(); }
omit...
void onConnect(WebSocket &socket) { Serial.println("OnConnect called"); wsConnect++; } void onDisconnect(WebSocket &socket) { Serial.println("onDisconnect called"); wsConnect = 0; }
omit...
//else if(rxLn[1] == 'I') { //digitalWrite(DE485, HIGH); //Soft485.write("$006"); //Soft485.write(0x0D); //digitalWrite(DE485, LOW); //} else if(rxLn[1] == 'I') XsfAdamPollData(); } void XsfAdamPollData(void) { hexToBit(preAdamPollRcv[0], 0); hexToBit(preAdamPollRcv[1], 4); wsServer.send(bitMap, 8); } void AdamPoll(void) { digitalWrite(DE485, HIGH); Soft485.write("$006"); Soft485.write(0x0D); digitalWrite(DE485, LOW); lastPollTime = millis(); }
omit...
if(rx485ix == 6) { // !ooii00<cr> //hexToBit(rx485Ln[2], 0); //hexToBit(rx485Ln[3], 4); //wsServer.send(bitMap, 8); // send only if previous input and current input is different. if((preAdamPollRcv[0] != rx485Ln[2]) || (preAdamPollRcv[1] != rx485Ln[3])) { preAdamPollRcv[0] = rx485Ln[2]; preAdamPollRcv[1] = rx485Ln[3]; if(wsConnect) XsfAdamPollData(); } }
We are going to modify HTML/JS a little bit.
Use the following source when modifying: https://github.com/michelleseo/Arduino_Web/blob/master/WSAdam/WSAdam1_0.html
omit...
// ws.onopen = function() { status('Connected...'); } ws.onopen = function() { status('Connected...'); DI(); // Read Input once when connected. }
omit...
<!--We do not need Update Button anymore.--> <!--<button type="button" onclick="DI()">IN Refresh</button>-->
Full codes can be found in following links
- WSAdam.ino:
https://github.com/michelleseo/Arduino_Web/blob/master/WSAdam/WSAdam1/WSAdam1.ino - WSAdam3_0.html:
https://github.com/michelleseo/Arduino_Web/blob/master/WSAdam/WSAdam3_0.html
No comments:
Post a Comment