首页 > 其他分享 >几种常用大模型工具生成基于hi3861的OpenHarmony代码的尝试

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

时间:2024-10-15 08:52:10浏览次数:3  
标签:OpenHarmony SSL hi3861 几种 编译 HTTPS curl

引言

最近在上智能物联网的课程,讲授基于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这样比较小众的平台,大模型工具的表现不是太好。

 

标签:OpenHarmony,SSL,hi3861,几种,编译,HTTPS,curl
From: https://blog.csdn.net/bit_mike/article/details/142929381

相关文章

  • 推荐几种主流数据仓库:深度剖析与对比
    引言 随着数据量的不断增长,数据仓库技术在企业的数据管理和分析中扮演着越来越重要的角色。不同的数据仓库系统在性能、架构、功能和适用场景上各有特点。本文将详细介绍目前市场上几种主流的数据仓库,帮助你更好地了解各个数据仓库的特性,选择最适合的方案。1.AmazonRe......
  • OpenHarmony的init程序、init配置与启动项配置
    1.init程序编译完后部署在/bin/init2.init程序的启动配置文件为/system/etc/init.cfg看一下内容与格式: 3.init程序的后续启动脚本放置目录为 /system/etc/init/里面是以.cfg结尾的文件,我们看一下其中的1个重要启动项配置文件appspawn.cfg:这个文件在源码中保存在:./b......
  • FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
    ​喊了多年的互联网寒冬,今年的寒风格外凛冽,还在坚守安卓开发的朋友着实不容易。因为能转行的早就转了,能转岗的也早就转了,那么安卓程序员比较迷茫的就是,我该学什么安卓技术才好呢?还是直接扔了安卓再去搞别的技术吗?下面探讨下安卓程序员还能在哪些方面进阶修炼,主要有以下三个方向......
  • 【Java】创建对象的几种方式
    【Java】创建对象的几种方式合集-Java基础(11)1.【Java】Integer包装类缓存(cache)05-092.【java】Java之关于基本数据类型和引用数据类型的存放位置05-093.【java】ArrayList和LinkedList的区别05-104.【java】【集合类】HashMap与HashTable的区别05-105.【Java】的四种引用......
  • uni-app中 navigateTo、reLaunch、redirectTo、switchTab几种页面路由方式的区别
    navigateTo作用:用于在当前页面内跳转到应用内的某个页面,使用wx.navigateTo跳转时,会把当前页面压入栈中,用户可以通过返回按钮或navigateBack 回到上一个页面。限制:不能跳转到tabBar页面。如果尝试跳转到tabBar页面,会没有反应或报错(具体取决于框架的实现)。使用场景:通常用......
  • 处理器中的几种hazard
    什么是hazard?Instructionsinteractwitheachotherinpipeline;StructuralHazard原因:Aninstructioninthepipelinemayneedaresourcebeingusedbyanotherinstructioninthepipeline;Structuralhazardoccurswhentwoinstructionsneedsamehardwar......
  • ESP32移植Openharmony设备开发---(1)环境搭建
    第一章环境搭建1.下载ubuntu创建虚拟机内存分配建议8G硬盘大于200G                                                                下载ubuntu20.04复制特征码打开迅雷即可下载5F5E8848426......
  • ESP32移植Openharmony设备开发---(3)任务调度
    任务调度官方文档:OpenAtomOpenHarmony基本概念从系统角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,各任务的运行相互独立。OpenHarmonyLiteOS-M的任务模块可以给用户提供多个任务,实现任务间的切换,帮助用户管理业务程序流程。......
  • 企业数据安全常见的几种内部威胁
    CybersecurityInsiders发布的《2023年内部威胁报告》指出,74%的组织容易受到内部威胁。内部威胁引发企业网络安全事件的平均成本、数量都在上升,但这些内部威胁没有引起企业足够的重视,往往在事发后才开始补救。人为因素是企业数据泄露主因,内部威胁和人员关系紧密,人员有意或......
  • 在Js中匿名函数的几种写法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......