【华清远见实训】2022-5-18
1、C语言项目代码运行步骤1)保证虚拟机和主机网络互通在windows下查看ip:win + R : 运行输入cmd,打开windows命令窗口输入ipconfigping命令:测试网络连通性导致ping不通的原因:1)双方不在同网段2)防火墙拦截ctrl + c //结束进程 发送杀死进程的信号2)让ubuntu支持mqtt将mqtt的库文件导入到根目录下的库中paho.mqtt.c-1.3.0
·
1、C语言项目代码运行步骤
1)保证虚拟机和主机网络互通
在windows下查看ip:
win + R : 运行
输入cmd,打开windows命令窗口
输入ipconfig
- ping命令:测试网络连通性
导致ping不通的原因:
1)双方不在同网段
2)防火墙拦截
ctrl + c //结束进程 发送杀死进程的信号
2)让ubuntu支持mqtt
将mqtt的库文件导入到根目录下的库中
paho.mqtt.c-1.3.0.tar.gz //压缩好的mqtt库文件
先将该压缩包移动到虚拟机中 (拖拽/终端复制/共享文件夹)
把include中所有文件拷贝到/usr/include目录中:
sudo cp include/* /usr/include
把lib中所有内容拷贝到/usr/lib目录中即可在代码中直接引用。拷贝命令如下:
sudo cp -d lib/*so* /usr/lib
3)将灯控实验的程序源码移动到虚拟机中
先将smarthome.conf文件中的ip修改成个人主机ip
输入make指令,对工程进行编译。
生成名为lamp的可执行程序
./lamp执行即可在虚拟仿真中看到现象。
2、C语言应用层代码具体实现
灯控实验 - 远程控制功能实现
-
编码思路:
1)连接MQTT mqtt_init(); //初始化mqtt 2)设置好发布消息的Topic 3)按json协议格式发送控制指令 int mqtt_publish(const char *topic, char *msg) 功能:向mqtt发布一条消息 参数:const char *topic 话题, char *msg 消息
-
C语言输入输出
printf 格式化输出函数
头文件:#include<stdio.h>
函数原型:int printf(const char *format, ...);
功能:向终端输出指定格式的内容
参数:格式,要输出的变量或内容
%d -- 十进制整数
%f -- 小数
%c -- 字符
%s -- 字符串
%p -- 地址
%#x -- 十六进制数
%#o -- 八进制数
...
scanf 格式化输入函数
int scanf(const char *format, ...);
功能:按照指定格式从终端输入数据
参数:格式,输入的目标地址
- 变量数据类型:
char 字符型 1字节
short 短整型 2字节
int 整型 4字节
long 长整型 4字节(32位os)
float 单精度浮点型 4字节
double 双精度浮点型 8字节
以下代码可以控制灯的亮灭
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mqtt.h"
#include "parse_config.h"
#include <unistd.h>
int main(int argc, char *argv[])
{
//char ctrlbuf[10] = {0};
int ctrl = 0;
printf("请输入控制指令:(1.开灯 2.关灯 3.退出)\n");
scanf("%d",&ctrl);
if(mqtt_init() != 0)
{
printf("连接失败!\n");
return 0;
}
if(ctrl == 1){
mqtt_publish("ScratchToSoftWare","{\"lamp\":true,\"id\":0}");
//推送开灯指令
}else if(ctrl == 2)
{
mqtt_publish("ScratchToSoftWare","{\"lamp\":false,\"id\":0}");
//推送关灯指令
}else if(ctrl == 3)
{
printf("控制系统退出!\n");
return 0;
}else
{
printf("指令有误!\n");
}
return 0;
}
此时灯亮
更多推荐
已为社区贡献2条内容
所有评论(0)