網(wǎng)上有很多關(guān)于有線終端pos機(jī),Arduino 使用 ENC28J60 有線網(wǎng)絡(luò)模塊的知識(shí),也有很多人為大家解答關(guān)于有線終端pos機(jī)的問題,今天pos機(jī)之家(www.rcqwhg.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
有線終端pos機(jī)
上圖就是 ENC28J60 網(wǎng)絡(luò)模塊。慣例,看接線方法,接7根:Vcc —— 3.3V(注意電壓?。〨ND —— GNDRESET —— RESET;CS —— 片選,與“ether.begin()”的第三個(gè)參數(shù)一致;下面的測(cè)試代碼接D10;SI —— D11(MOSI口,見下圖);SO —— D12(MISO口,見下圖);SCK —— D13(SCK口,見下圖);
寫一段代碼,當(dāng)用網(wǎng)頁訪問網(wǎng)絡(luò)模塊的時(shí)候,顯示開關(guān)狀態(tài)。當(dāng)直接訪問 http://192.168.1.17 時(shí),顯示當(dāng)前狀態(tài):OFF當(dāng)帶參數(shù)訪問時(shí):http://192.168.1.17/?ON 或 http://192.168.1.17/?OFF則顯示參數(shù)狀態(tài)。
庫(kù)文件:https://github.com/jcw/ethercard
源代碼:
#include <EtherCard.h>//首先,你需要包括EtherCard庫(kù),并定義一些變量:mac地址(mymac[]),IP地址(myip[])和用來存儲(chǔ)傳入和傳出的數(shù)據(jù)緩沖(Ethernet::buffer[700])。static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01}; //網(wǎng)卡MAC地址,mac地址第一字節(jié)必須是偶數(shù)。static byte myip[] = {192,168,1,17}; //網(wǎng)卡IP地址byte Ethernet::buffer[700]; //緩沖區(qū)大小char on[] = "ON";char off[] = "OFF";boolean relayStatus;char* relayLabel;char* linkLabel;void setup () {Serial.begin(9600);Serial.println("ENC28J60有線網(wǎng)絡(luò)模塊演示");//用begin()方法開始網(wǎng)絡(luò)連接,需要3個(gè)參數(shù),分別為緩沖大小、MAC地址和Arduino的片選(CS)引腳.//片選通常為10,這個(gè)參數(shù)可以不寫,如果不寫的話默認(rèn)為8,所以要根據(jù)你的電路進(jìn)行設(shè)置。if(!ether.begin(sizeof Ethernet::buffer, mymac, 10))Serial.println( "連接網(wǎng)絡(luò)失敗");elseSerial.println("連接網(wǎng)絡(luò)成功");//用staticSetup()方法配置靜態(tài)的IP地址,參數(shù)有3個(gè),分別為ip地址、網(wǎng)關(guān)和DNS,IP地址是必須的,網(wǎng)關(guān)和DNS是可選的。大家看下這個(gè)函數(shù)的參數(shù)定義。if(!ether.staticSetup(myip))Serial.println("設(shè)置IP地址失敗");elseSerial.println("設(shè)置IP地址成功");relayStatus = false;relayLabel = off;linkLabel = on;}void loop() {//在loop里面, 你只需要2條命令://packetReceive()方法: 從網(wǎng)絡(luò)接收一個(gè)新傳入的數(shù)據(jù)包;//packetLoop() 方法:對(duì)具體收到的信息作出回應(yīng),包含“ping” 請(qǐng)求(ICMP echo 請(qǐng)求)。word len = ether.packetReceive();word pos = ether.packetLoop(len);if(pos) {if(strstr((char *)Ethernet::buffer + pos, "GET /?ON") != 0) {relayStatus = true;relayLabel = on;linkLabel = off;} else if(strstr((char *)Ethernet::buffer + pos, "GET /?OFF") != 0) {relayStatus = false;relayLabel = off;linkLabel = on;}BufferFiller bfill = ether.tcpOffset();bfill.emit_p(PSTR("HTTP/1.0 200 OK\\""Content-Type: text/html\\Pragma: no-cache\\\\""<html><head><meta charset='UTF-8' meta name='viewport' content='width="360px",height="auto" />
margin:-100px 0 0 -100px'>""<div style='font:bold 14px verdana;text-align:center'>當(dāng)前狀態(tài) $S</div>""<br><div style='text-align:center'>""<a href='/?$S'></a>""</div></div></body></html>"), relayLabel, linkLabel, linkLabel);ether.httpServerReply(bfill.position());}}以上就是關(guān)于有線終端pos機(jī),Arduino 使用 ENC28J60 有線網(wǎng)絡(luò)模塊的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于有線終端pos機(jī)的知識(shí),希望能夠幫助到大家!