几种常用大模型工具生成基于hi3861的OpenHarmony代码的尝试

news2025/1/15 8:35:40

引言

最近在上智能物联网的课程,讲授基于hi3861的OpenHarmony编程,所以尝试一下使用大模型工具生成相关的代码,看看效果如何。提问的方式比较简单粗暴:

在OpenHarmony的hi3861平台上,如何编程访问https的网站?

Kimi

Kimi是我用得最多的平台,它经过文献搜索之后给出如下答案。

e12fe77f12a4454d898e6f4dd5a27d90.png

 

在OpenHarmony的hi3861平台上访问https的网站,通常需要以下几个步骤:

  1. Wi-Fi连接:首先,确保hi3861开发板已经连接到互联网。这通常涉及到扫描可用的Wi-Fi网络,然后连接到一个具体的网络。可以通过以下API实现:

    c

    wifi_scan(NULL); // 扫描周边可用的Wi-Fi网络
    wifi_connect(ssid, key); // 连接到指定的Wi-Fi网络

    其中ssid是网络名称,key是网络密钥。连接成功后,可以通过wifi_set静态ip设置静态IP地址,以保证设备的网络连接稳定性。

  2. 配置网络参数:在进行网络编程之前,需要根据你的无线路由、Linux系统IP修改net_params.h文件的相关代码,包括热点名称、热点密码、服务器IP地址和端口号等。

  3. 使用LwIP Socket API编程:OpenHarmony的hi3861平台支持LwIP协议栈,可以使用LwIP的Socket API进行网络编程。例如,创建一个UDP客户端进行网络通信的步骤如下:

    • 创建Socket:socket()
    • 设置目标服务器地址和端口:sockaddr_in
    • 发送和接收数据:sendto() recvfrom()
    • 关闭Socket:close()

    具体的代码实现可以参考提供的示例。

  4. 访问HTTPS网站:对于HTTPS的支持,通常需要一个SSL/TLS库来处理加密和证书验证。在嵌入式设备上,这通常意味着使用一个轻量级的SSL库,如wolfSSL、mbedTLS等。你需要集成这样的库到你的OpenHarmony项目中,并使用它来创建一个安全的连接。

  5. 调试和验证:在开发过程中,可以通过printf打印日志或者通过asm文件定位panic问题来进行调试验证。

请注意,由于hi3861是一个轻量级的IoT设备,它的资源有限,因此可能需要对SSL/TLS库进行适当的配置以适应其资源限制。同时,确保你的OpenHarmony版本支持你选择的SSL/TLS库。由于搜索结果中没有直接提供如何在OpenHarmony上实现HTTPS的具体代码,你可能需要参考官方文档或者社区论坛来获取更多信息。

Kimi的大思路是对的,但是没有给出具体的代码,主要的原因大概是网络上找不到现成的例子。 

文心一言

同样的问题甩给文心一言后,它也很快地给出了答案。

a5c16141125d45838bb10683d46c2f8f.png

在OpenHarmony的hi3861平台上访问HTTPS网站,你通常需要用到一些网络通信库来处理HTTP请求和SSL/TLS加密。由于OpenHarmony是一个轻量级的操作系统,很多标准的库可能需要进行适配或者移植。以下是一个基本的步骤指南,用于在OpenHarmony的hi3861平台上编程访问HTTPS网站。

1. 准备工作

  1. 开发环境:确保你已经设置好OpenHarmony的开发环境,包括必要的SDK和工具链。
  2. 了解hi3861平台:熟悉hi3861的硬件规格和OpenHarmony在该平台上的支持情况。

2. 选择和移植库

OpenHarmony可能没有直接提供完整的HTTP和SSL/TLS库,因此你可能需要选择并移植这些库。

可能的库选择

  • libcurl:一个支持多种协议的客户端URL传输库,包括HTTPS。
  • mbedTLS:一个轻量级的SSL/TLS库,适合嵌入式系统。
  • OpenSSL:一个功能强大的SSL/TLS库,但可能较为庞大。

移植步骤

  1. 下载源码:从库的官方网站下载源码。
  2. 配置编译:根据hi3861的编译环境,配置库的编译选项。
  3. 编译库:使用OpenHarmony的编译工具链编译库文件。
  4. 集成库:将编译好的库文件集成到你的OpenHarmony项目中。

3. 编写代码

以下是一个使用libcurl访问HTTPS网站的示例代码:

 

c复制代码

 #include <stdio.h>
 #include <stdlib.h>
 #include <curl/curl.h>
  
 // 回调函数,用于处理从服务器接收到的数据
 size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
 {
 ((char *)userp)[0] = '\0';
 strncat((char *)userp, (char *)contents, size * nmemb);
 return size * nmemb;
 }
  
 int main(void)
 {
 CURL *curl;
 CURLcode res;
 char readBuffer[1024 * 1024]; // 缓冲区,用于存储从服务器接收到的数据
  
 // 初始化libcurl
 curl_global_init(CURL_GLOBAL_DEFAULT);
 curl = curl_easy_init();
 if(curl) {
 // 设置URL
 curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com");
  
 // 设置回调函数
 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
  
 // 设置回调函数的数据参数
 curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)readBuffer);
  
 // 执行请求
 res = curl_easy_perform(curl);
  
 // 检查请求是否成功
 if(res != CURLE_OK)
 fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
 else
 printf("Response: %s\n", readBuffer);
  
 // 清理
 curl_easy_cleanup(curl);
 }
 curl_global_cleanup();
  
 return 0;
 }

4. 编译和运行

  1. 修改CMakeLists.txt:将你的代码和依赖的库添加到CMakeLists.txt中。
  2. 编译项目:使用OpenHarmony的编译工具链编译你的项目。
  3. 烧录和运行:将编译好的固件烧录到hi3861开发板上,并运行程序。

5. 调试和测试

  • 查看日志:使用OpenHarmony提供的日志工具查看程序的输出和调试信息。
  • 测试不同URL:尝试访问不同的HTTPS网站,确保程序能够正确处理各种情况。

注意事项

  • 内存限制:hi3861是一个资源有限的嵌入式平台,注意控制内存使用。
  • 安全性:确保你使用的SSL/TLS库是安全的,并经常更新以修复可能的安全漏洞。
  • 兼容性:测试你的程序在不同版本的OpenHarmony和hi3861硬件上的兼容性。

通过以上步骤,你应该能够在OpenHarmony的hi3861平台上编程访问HTTPS网站。如果遇到具体问题,可以查阅相关库的文档和OpenHarmony的开发者指南。

 

文心一言给的大方向也还是可以,但是这里面有些问题。一个是libcurl是不是可以在hi3861上运行,这个不确定,另一个是它没有考虑到OpenHarmony所使用的编译系统并不是CMake。所以它给的解答可能在Linux上没有问题,但是在hi3861上不一定能用。

星火飞码

星火飞码(iFlyCode)是讯飞星火提供的VSCode插件,它是针对编程设计的,所以我也向它提了同样的问题。

64d9ff34a0c543dea1a40a52fcc87086.png 

OpenHarmony是由华为开发的开源物联网操作系统,它支持多种芯片和硬件平台。在hi3861平台上访问HTTPS网站需要使用相关的网络库和任务处理机制。下面我将为您生成一个示例代码框架,演示如何在OpenHarmony上实现这一功能:

首先,您需要在系统中包含必要的网络库,并初始化相关配置。然后,创建一个任务来执行HTTPS请求,并处理响应数据。

 

新建插入复制比较

#include <ohos/network/netmgr.h>
#include <ohos/network/https.h>
using namespace OHOS;
class MyHttpsTask : public ::OHOS::AAFwk::Ability
{
public: MyHttpsTask() = default; ~MyHttpsTask() override = default; void OnStart(const Want &want) override { NetmgrStub::GetInstance().Connect(want);
}
void OnConnect() override { // 初始化网络配置 s_netMgr.SetMaxRecommendConnectionCount(5); s_netMgr.SetKeepAliveTime(30); s_netMgr.SetGlobalProxy(nullptr); // 创建并执行HTTPS请求 std::shared_ptr<HttpsConnection> connection = HttpsConnection::Create(/*URL*/ "https://www.example.com", this); if (connection != nullptr) { connection->SendRequest(Want{}); } } void OnResponse(const HttpsResponse &response) override { // 处理HTTPS响应 if (response.GetErrorCode() == ERR_OK) { std::string responseText = response.ReadAll(); // 处理响应文本 } else { // 错误处理 } } private: static NetManager s_netMgr; }; NetManager MyHttpsTask::s_netMgr;

在这个示例中,我们通过HttpsConnection类来实现对HTTPS网站的访问,并实现了OnResponse方法来处理服务器返回的响应数据。请注意,您需要根据实际需求修改URL和其他相关参数。

它的回答显然不是针对hi3861的,没法用。

结语

从目前看,针对像hi3861这样比较小众的平台,大模型工具的表现不是太好。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS 打包/导出时提示图标错误,缺少某个规格的图标

Asset validation failed Missing required icon file. The bundle does not contain an app icon for iPad of exactly ‘167x167’ pixels, in .png format for iOS versions supporting iPad Pro. To support older operating systems, the icon may be required in the bun…

唐寅,风流倜傥的艺术天才

唐寅&#xff0c;字伯虎&#xff0c;号六如居士&#xff0c;生于明宪宗成化六年&#xff08;公元1470年&#xff09;&#xff0c;卒于明世宗嘉靖二十三年&#xff08;公元1524年&#xff09;&#xff0c;享年54岁。他是吴门画派的重要代表人物之一&#xff0c;不仅在绘画方面有…

分享两种安装windows系统教程,学会后再也不需要花钱装系统了。

前期准备工作&#xff1a; 需要一个8G或16G的空U盘需要你安装的系统的镜像文件 一般是一个以 .iso 后缀结尾的文件 2.1 镜像文件获取方式 1&#xff09; 去windows 官网获取 2&#xff09;去 我告诉你 网址下载所需要的镜像文件 这个网址 分享了很多 我们常用的系统 大家可以按…

docker构建jar镜像

文章目录 构建 DockerFile将jar包上传到创建的目录当中在目录中创建 Dockerfile 文件构建镜像创建并启动容器说明 构建 DockerFile [root192 /]# mkdir my [root192 /]# cd my [root192 my]# 将jar包上传到创建的目录当中 在目录中创建 Dockerfile 文件 vi Dockerfile FROM …

RabbitMQ 入门(六)SpringAMQP五种消息类型

一、发布订阅-DirectExchange&#xff08;路由模式&#xff09; 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 Direct Exchan…

共识算法Raft(day11)

引入 在分布式系统中&#xff0c;为了消除单点提高系统可用性&#xff0c;通常会创建副本来进行容错&#xff0c;但这会带来另一个问题就是&#xff0c;如何保证多个副本之间的数据一致性。 为了解决这个问题&#xff0c;计算机行内就提出了共识算法&#xff0c;它允许多个分…

增强对象智能:谷歌开源的XR-Objects项目简介

随着增强现实(AR)技术的发展,将物理世界与数字信息融合的需求日益增长。为了探索这一领域的可能性,谷歌推出了一项名为“增强对象智能”(Augmented Object Intelligence, AOI)的新交互范式,并发布了一个开源原型系统——XR-Objects。该系统旨在通过实时对象分割和多模态…

SpringBoot智能推荐:健康生活新体验

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

行业分析---自动驾驶人才流动及从业思考

1 背景 近两年在自动驾驶行业&#xff0c;人才流动非常频繁&#xff0c;最新且影响比较大的例子是小鹏多位高管 “转会” 英伟达。自小鹏前自动驾驶副总裁吴新宙去年8月加入英伟达后&#xff0c;12个月里&#xff0c;至少6位小鹏技术人员加入英伟达。 如果把时间拉得更长一些&a…

MySql数据库---索引、引擎、事务

思维导图 索引 索引特点 通过某一列的特征.给表添加一个索引列.索引列需要mysql来维护.也会消耗内存和cpu资源. 索引实现原理 通过算法来实现: 常见有hash算法和b_tree树来实现. 把列中的值通过hash计算出一个整数值.把整数值单独存储成为索引列.用于记录位置.避免全表扫描…

NVME盘未格式化导致Ubuntu20.04启动慢

背景 最近公司一款产品转产&#xff0c;工厂组装好后&#xff0c;用我提供的系统镜像烧录&#xff0c;系统起来后发现Ubuntu20.04转圈了90秒才进入图形界面&#xff0c;这是不可接受的&#xff0c;公司老总要求当天必须解决。 定位 分析syslog 看不到系统启动时的日志&…

maven项目package打包的时候遇到-source 1.5 中不支持 try-with-resources

maven项目package打包的时候遇到-source 1.5 中不支持 try-with-resources遇到:-source 1.5 中不支持 try-with-resources错误信息。 解决办法 在pom.xml中增加一下代码,如果你的JDK版本不是用的1.8,请记得修改为你当前的JDK版本号。 <build><plugins>

怎么给视频加动态字幕

怎么给视频添加动态字幕&#xff1f;动态字幕不仅能帮助观众更好理解视频内容&#xff0c;特别是当视频中存在复杂的术语、方言、外语或背景噪音时。通过精心设计的动态字幕&#xff0c;视频制作者可以强调关键词汇、短语或情感表达&#xff0c;从而增强内容的吸引力和感染力。…

(35)信号频谱的双边谱与单边谱

文章目录 前言一、仿真代码二、仿真结果画图 前言 本文首先使用MATLAB生成一段余弦信号&#xff0c;然后对其进行FFT变换&#xff0c;首先计算出信号的双边谱&#xff0c;然后在双边谱的基础上计算出信号的单边谱。 一、仿真代码 代码如下&#xff1a; %% 生成余弦波 % 指定…

3D Gaussian Splatting前向渲染代码解读

文章目录 3D Gaussian Splatting前向渲染简介3DGS前向渲染流程伪代码 代码解读栅格化主流程初始化常量和变量预处理生成Idx为排序做准备查找最高有效位device级别的并行基数排序排序后处理渲染 预处理获取3D高斯点的id&#xff0c;变量初始化检查3D高斯点是否在视锥体范围内计算…

Finops成本优化企业实践-可优化篇

引言&#xff1a;即上一章讨论了finops的第一步--可视化之后&#xff0c;本篇继续讨论finops第二步--可优化&#xff0c;其中涉及到可视化的部分请读者移步致上一篇。 笔者今年在项目上完成了40%的费用节省&#xff0c;从一月份的每月9万美刀降至十月份的每月5万多美刀。本篇会…

智慧交通:科技保障出行安全

智慧交通是当代城市发展的重要方向之一&#xff0c;以安全、高效、智能为目标&#xff0c;通过科技手段对交通进行管理和优化。安防系统作为智慧交通的重要组成部分&#xff0c;在保障交通安全、提高交通效率方面起着重要作用。本文将从巡检漫游、能耗监测和智能照明三个方面介…

macOS Sequoia运行缓慢的原因及解决方法

最近&#xff0c;许多升级到macOS Sequoia的用户反映&#xff0c;系统运行速度变慢&#xff0c;影响了日常使用体验。这种问题可能是由于多种原因导致的&#xff0c;例如系统资源消耗过大、磁盘空间不足或某些应用程序的不兼容。本文将深入分析macOS Sequoia运行缓慢的常见原因…

穷举vs暴搜vs深搜vs回溯vs剪枝(三)

文章目录 字母大小写全排列优美的排列N 皇后有效的数独 字母大小写全排列 题目&#xff1a;字母大小写全排列 思路 对每个位置的字符有两种情况 不修改&#xff1a;数字字符&#xff0c;直接递归下一层&#xff1b;修改&#xff1a;字母字符&#xff0c;大写改小写、小写改大写…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…