微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 看了一下午,真是不知道该怎么改,要哭了!

看了一下午,真是不知道该怎么改,要哭了!

时间:10-02 整理:3721RD 点击:
    一部分程序:
   #include<reg51.h>
   #include"esp8266.h"
   #include"temp.h"
   #include"ds1302.h"
   unsigned char code TCPLJ[]={"AT+CIPSTART=\"TCP\",\"tcp.lewei50.com\",9960"}; //TCP连接地址
   unsigned char code FSSJ1[]={"{\"method\": \"update\",\"gatewayNo\": \"02\",\"userkey\": \"8f032c67b50d4ab192d7bc6938246b43\"}&^!"};
   unsigned char code FSSJ2[]={"{\"method\": \"upload\",\"data\":[{\"Name\":\"T1\",\"Value\":\""};
   unsigned char code FSSJ3[]={"{\"method\": \"upload\",\"data\":[{\"Name\":\"H1\",\"Value\":\""};
   unsigned char code SF[]={"\"}]}&^!"};        //结束标识符
  unsigned char code AT[]={"AT\r\n"};            
  // unsigned char code SD[]="AT+CIPSEND=200";(这句暂时不要)
   unsigned char code FS[]={"AT+CIPSEND\r\n"};   //发送的AT指令

   void sendstring(unsigned char *str)         //发送字符串
{
   while((*str) != '\0')
   {
     sendchar(*str);
     str++;
   }
}     
   void sendchar(unsigned char ch)        //发送一个字符
   {
                   SBUF=ch;
                while(!TI);
                TI=0;
   }
                      //esp8266
                void sendtemperature(void)
   {   delay1ms(5000);
       sendstring(AT);
        delay1ms(500);
       sendstring(TCPLJ);
           delay1ms(500);
              sendstring(FS);
           delay1ms(500);
           sendstring(FSSJ1);//发送注册信息
           delay1ms(500);
           sendchar(0x1A);
           sendstring("\r\n");
           delay1ms(500);
           sendstring(FS); //开始
           delay1ms(500);
           sendstring(FSSJ2);//发送温度信息
           sendstring(w);
           sendstring(SF);
           delay1ms(500);
           sendchar(0x1A);
           sendstring("\r\n");
           delay1ms(500);
          //发送湿度
          sendstring(FS);
          delay1ms(500);
          sendstring(FSSJ3);//发送湿度
          sendstring(w);
          sendstring(SF);
          delay1ms(500);
          sendchar(0x1A);
          sendstring("\r\n");
}   
有问题的其实是红色的这句,那个w变量是别的.c文件里的,那里定义的是double w;w是18b20测出来的温度,一开始每次运行都显示w未定义,问题1:如果是不同的.c文件里的变量,想要引用该怎么办,我是直接放到头文件里面了,然后共用这个头文件,不知道这样可以不?这个extern可以用在这里吗?怎么用啊?
问题2:放到头文件里之后,再运行显示 error C214: illegal pointer conversion,不合法的指针转换什么意思,这个double型的变量w的地址是什么啊?该怎么改?
问题3:话说我看过别人一个用gprs的一个类似的程序,他使用这个w的时候是:extern unsigned char *w;这样,,,怎么写啊?



你的思路没有错,在其他的.c文件中变量引用时需要声明一下。
可以这样使用:
1、在w变量的头文件中增加extern double w;
2、在你的主工程文件里包含以下,#include “*.h”

可以使用extern,加在你正常的定义前面设定全局变量

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top