极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 布列松

enc28j60 控制多个 led IO 的代码,模块本身带控制的html页面

[复制链接]
 楼主| 发表于 2015-4-11 11:51:41 | 显示全部楼层
tsaiwn 发表于 2015-4-11 08:51
问题出在你送出给另一端的 HTTP 回应漏掉了最后的\r\n\r\n

试这:

也是没有效果,和我之前的一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-11 17:59:11 | 显示全部楼层
tsaiwn 发表于 2015-4-11 08:51
问题出在你送出给另一端的 HTTP 回应漏掉了最后的\r\n\r\n

试这:

搞定的,朋友,谢谢你,原来是我自己数组写错了......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-11 23:03:19 | 显示全部楼层
tsaiwn 发表于 2015-4-11 08:51
问题出在你送出给另一端的 HTTP 回应漏掉了最后的\r\n\r\n

试这:

如果这段代码 我想控制的4个数字口LED,应该怎样改
回复 支持 反对

使用道具 举报

发表于 2015-4-11 23:56:28 | 显示全部楼层
布列松 发表于 2015-4-11 23:03
如果这段代码 我想控制的4个数字口LED,应该怎样改

类似啊
就仿照你现在的, 例如:
// status 改 status2
if(strstr((char *)Ethernet::buffer + pos, "GET /?status2=ON") != 0) {
检查收到不同字符串做不同事情
  让status2=ON 代表 led2 ON
}
//...
就复制四分, 各自改一改

但是,
最后那回传要注意友四分:

bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
      "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
      "<html><head><title>WebLed</title></head>"
      "<body>"
      "LED Status: $S "
      "<a href=\"/?status=$S\"><input type=\"button\" value=\"$S\"></a>"
      "<br><br>"

      "LED2 Status: $S "
      "<a href=\"/?status2=$S\"><input type=\"button\" value=\"$S\"></a>"
      "<br><br>"

      "LED3 Status: $S "
      "<a href=\"/?status3=$S\"><input type=\"button\" value=\"$S\"></a>"
      "<br><br>"

      "LED4 Status: $S "
      "<a href=\"/?status4=$S\"><input type=\"button\" value=\"$S\"></a>"
      "<br><br>"

      "</body></html>\r\n\r\n"      
      ), statusLabel, buttonLabel, buttonLabel,
      statusLabel2, buttonLabel2, buttonLabel2,
      statusLabel3, buttonLabel3, buttonLabel3,
      statusLabel4, buttonLabel4, buttonLabel4,
      );


回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-12 12:32:55 | 显示全部楼层
tsaiwn 发表于 2015-4-11 23:56
类似啊
就仿照你现在的, 例如:
// status 改 status2

发现前面如果这样加的话,上传成功,但主板好像是死机了,

  1. char* on = "ON";
  2. char* off = "OFF";
  3. char* statusLabel;
  4. char* buttonLabel;
  5. char* statusLabel2;
  6. char* buttonLabel2;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-12 15:37:03 | 显示全部楼层
tsaiwn 发表于 2015-4-11 23:56
类似啊
就仿照你现在的, 例如:
// status 改 status2

能不能完整的帮忙改一遍,我今天改了半天也没改好
回复 支持 反对

使用道具 举报

发表于 2015-4-12 18:18:46 | 显示全部楼层
本帖最后由 tsaiwn 于 2015-4-13 19:26 编辑
布列松 发表于 2015-4-12 15:37
能不能完整的帮忙改一遍,我今天改了半天也没改好
  1. #include <EtherCard.h>

  2. static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
  3. static byte myip[] = {192,168,1,180};
  4. byte Ethernet::buffer[700];

  5. const int ledPin = 3;
  6. boolean ledStatus;

  7. char* on = "ON";
  8. char* off = "OFF";
  9. char* statusLabel;
  10. char* buttonLabel;
  11. unsigned char hexdata[8] = {0x01,0x05,0x00,0x10,0xFF,0x00,0x8D,0xFF};
  12. unsigned char yy[] = {0x0 ? ?  ? ?  ?  ?  ??  ?? ? };

  13. void setup () {

  14.   Serial.begin(9600);
  15.   Serial.println("WebLed Demo");

  16.   if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
  17.     Serial.println( "Failed to access Ethernet controller");
  18. else
  19.    Serial.println("Ethernet controller initialized");

  20.   if (!ether.staticSetup(myip))
  21.     Serial.println("Failed to set IP address");

  22.   Serial.println();

  23.   pinMode(ledPin, OUTPUT);
  24.   digitalWrite(ledPin, LOW);
  25.   ledStatus = false;
  26. }

  27. void loop() {

  28.   word len = ether.packetReceive();
  29.   word pos = ether.packetLoop(len);
  30.   doLed(pos);
  31.   doLed2(pos);
  32.   doLed3(pos);
  33.   doLed4(pos);

  34.     BufferFiller bfill = ether.tcpOffset();
  35.     /////
  36.     bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
  37.       "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
  38.       "<html><head><title>WebLed</title></head>"
  39.       "<body>"
  40.       "LED Status: $S "
  41.       "<a href="/?status=$S"><input type="button" value="$S"></a>"
  42.       "<br><br>"

  43.       "LED2 Status: $S "
  44.       "<a href="/?status2=$S"><input type="button" value="$S"></a>"
  45.       "<br><br>"

  46.       "LED3 Status: $S "
  47.       "<a href="/?status3=$S"><input type="button" value="$S"></a>"
  48.       "<br><br>"

  49.       "LED4 Status: $S "
  50.       "<a href="/?status4=$S"><input type="button" value="$S"></a>"
  51.       "<br><br>"

  52.       "</body></html>\r\n\r\n"      
  53.       ), statusLabel, buttonLabel, buttonLabel,
  54.       statusLabel2, buttonLabel2, buttonLabel2,
  55.       statusLabel3, buttonLabel3, buttonLabel3,
  56.       statusLabel4, buttonLabel4, buttonLabel4,
  57.       );
  58. /////
  59.     ether.httpServerReply(bfill.position());
  60. }
  61. void doLed( word pos) {
  62.    if(pos) {
  63.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
  64.       Serial.write(hexdata, 8);
  65.       ledStatus = true;
  66.     }

  67.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
  68.       Serial.write(yy,  sizeof( yy ));
  69.       ledStatus = false;
  70.     }

  71.     if(ledStatus) {
  72.       digitalWrite(ledPin, HIGH);
  73.       statusLabel = on;
  74.       buttonLabel = off;
  75.     } else {
  76.       digitalWrite(ledPin, LOW);
  77.       statusLabel = off;
  78.       buttonLabel = on;
  79.     }
  80.   }
  81. }
  82. void doLed2( word pos ) {
  83.   自己參考以下改
  84. }
  85. void doLed3( word pos ) {
  86.   自己參考以下改
  87. }
  88. void doLed4(word pos ) {
  89.    if(pos) {
  90.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status4=ON") != 0) {
  91.       ??? ??? Serial.write(hexdata, 8);
  92.       ledStatus4 = true;
  93.     }

  94.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status4=OFF") != 0) {
  95.       ??? ??? Serial.write(yy,  sizeof( yy ));
  96.       ledStatus4 = false;
  97.     }

  98.     if(ledStatus4) {
  99.       digitalWrite(ledPin4, HIGH);
  100.       statusLabel4 = on;
  101.       buttonLabel4 = off;
  102.     } else {
  103.       digitalWrite(ledPin4, LOW);
  104.       statusLabel4 = off;
  105.       buttonLabel4 = on;
  106.     }
  107.   }
  108. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-4-12 18:21:10 | 显示全部楼层
tsaiwn 发表于 2015-4-12 18:18


注意前面要有各 Variable  !
led*2
led*3
led*4
...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-13 00:08:46 | 显示全部楼层
tsaiwn 发表于 2015-4-12 18:21
注意前面要有各 Variable  !
led*2
led*3

doLed2(pos);    这个怎么解



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-4-13 00:17:22 | 显示全部楼层
布列松 发表于 2015-4-13 00:08
doLed2(pos);    这个怎么解

你是不是自己沒寫以下這
void doLed2( word pos ) {
  自己參考以下改
}
void doLed3( word pos ) {
  自己參考以下改
}
void doLed4(word pos ) {
   if(pos) {
...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-13 12:41:48 | 显示全部楼层
tsaiwn 发表于 2015-4-13 00:17
你是不是自己沒寫以下這
void doLed2( word pos ) {
  自己參考以下改

我加你QQ 说说
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-13 12:45:33 | 显示全部楼层
tsaiwn 发表于 2015-4-13 00:17
你是不是自己沒寫以下這
void doLed2( word pos ) {
  自己參考以下改

我按照这样复制下去,校验有错误提示,不知怎样修改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-13 13:43:54 | 显示全部楼层
tsaiwn 发表于 2015-4-13 00:17
你是不是自己沒寫以下這
void doLed2( word pos ) {
  自己參考以下改

我后面有加 这个代码的

  1. void doLed2( word pos )
  2.    if(pos) {
  3.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status2=ON") != 0) {
  4.       Serial.write(hexdata, 8);
  5.       ledStatus2 = true;
  6.     }

  7.     if(strstr((char *)Ethernet::buffer + pos, "GET /?status2=OFF") != 0) {
  8.       Serial.write(yy,  sizeof( yy ));
  9.       ledStatus2 = false;
  10.     }

  11.     if(ledStatus4) {
  12.       digitalWrite(ledPin2, HIGH);
  13.       statusLabel2 = on;
  14.       buttonLabel2 = off;
  15.     } else {
  16.       digitalWrite(ledPin2, LOW);
  17.       statusLabel2 = off;
  18.       buttonLabel2 = on;
  19.     }

  20. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-4-13 14:44:11 | 显示全部楼层
布列松 发表于 2015-4-13 13:43
我后面有加 这个代码的

void doLed2( word pos )

你这句:
  void doLed2( word pos )
后面的 "{ " 到哪去了
太离谱了吧 !?
要自己多加油 !
回复 支持 反对

使用道具 举报

发表于 2015-4-13 14:47:22 | 显示全部楼层
布列松 发表于 2015-4-13 13:43
我后面有加 这个代码的

void doLed2( word pos )

最简单就是把我给你的整个
void doLed4(word pos) {
...
...
}
整个复制贴上, 再把有 4 的都改为 2
再复制一份, 把 4 都改为 3
只能帮到这啰 !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 05:53 , Processed in 0.039619 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表