ps script http通信 2

本文介绍了使用HTTP GET方法从指定URL下载文件的过程,并详细解释了如何解析URL、获取主机名、构造请求字符串、发送HTTP请求及接收响应数据。重点在于实现文件的下载并保存到本地。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function httpGetFile(url, port){
   if(url.substr(0,7)=="http://")
url=url.substr(7);
   if(!port) port=80;
   var
domain=url.split("/")[0]+":"+port;
   var
fileName=url.substr(url.lastIndexOf("/")+1);
   var call="GET ";
 
 if(url.indexOf("/")<0){
      call+="/";
   }else{
    
 call+=url.substr(url.indexOf("/"));
   }
   call+=" HTTP/1.1\n";
 
 call+="Host: "+domain+"\n\n";
   
   var reply = new String();
   var
file = new File();
   file.encoding = "binary";
   file.open("w");
 
 var conn = new Socket();
   conn.encoding = "binary";
   if (conn.open
(domain, "binary")) {
      conn.write (call);
      reply =
conn.read(99999999999);
      reply = reply.split("\r\n").join("\n");
    
 reply = reply.split("\r").join("\n");
    
 file.write(reply.substr(reply.indexOf("\n\n")+2));
      file.close();
 
    file.rename(fileName);
      conn.close();
   }else{
    
 alert("CONNECTION TO DATABASE FAILED");
      reply = "";
   }
 
 return file;
}

// EXAMPLE:
var
gotFile=httpGetFile("http://www.ps-scripts.com/bb/templates/subSilver/images/logo1.gif");

alert("GOT
FILE "+gotFile.length);

app.load(gotFile);

### Zynq PS与PL之间通过UART实现串口通信 在Zynq SoC架构中,PS(Processing System)和PL(Programmable Logic)可以通过多种方式进行通信,其中一种常见的方式是使用UART Lite IP核来扩展PL中的串口功能,并结合PS端的UART控制器完成数据交互[^3]。 #### 初始化PS端UART 为了使能PS端的UART通信,在硬件设计阶段需确保已启用相应的UART外设。随后可通过软件代码初始化该UART模块,包括设置波特率、停止位、校验模式等参数。以下是典型的初始化过程: ```c #include "xuartps.h" #define UART_DEVICE_ID XPAR_XUARTPS_0_DEVICE_ID int UartPsInitExample() { int Status; XUartPs Uart; // 创建XUartPs实例 /* 初始化UART */ Status = XUartPs_CfgInitialize(&Uart, XUartPs_LookupConfig(UART_DEVICE_ID), UART_DEVICE_ID); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* 设置工作参数 */ XUartPs_SetBaudRate(&Uart, 115200); // 设置波特率为115200bps XUartPs_Send(&Uart, (u8*)"Initialization Complete\r\n", strlen("Initialization Complete\r\n")); return XST_SUCCESS; } ``` 上述代码片段展示了如何初始化PS端的UART并发送一条测试消息[^1]。 #### 使用UART Lite IP核扩展PL侧串口 对于需要额外串口的应用场景,可以借助Vivado工具链中的`UART Lite` IP核创建新的串口通道。此IP核允许用户定义特定的工作频率及时钟分频因子以适配目标系统的时序需求。下面是一个简单的TCL脚本示例,用于向项目添加UART Lite组件及其连接关系: ```tcl set ipName uart_lite_0 create_ip -name axi_uartlite -vendor xilinx.com -library ip -module_name $ipName set_property -dict [list CONFIG.C_BAUDRATE {115200}] [get_ips $ipName] generate_target all [get_files ./$ipName/$ipName.xci] export_ip_user_files -of_objects [get_files ./$ipName/$ipName.xci] -no_script -sync -force -quiet ``` 这段脚本自动配置了一个运行于115200 bps速率下的UART Lite实例。 #### 数据交换流程说明 当PS接收到来自外部设备的数据包后,它会触发中断通知处理器执行回调函数处理新到达的信息;与此同时,也可以主动调用API将待传递的内容写入缓冲区等待传输至指定的目标地址。而位于FPGA fabric内部的UART Lite则负责监听物理层信号变化并将捕获到的有效载荷转发出去或者反之亦然[^4]。 例如,假设我们已经建立了双向链接,则可以在应用程序层面编写如下逻辑控制读取操作: ```c char RxBuffer[256]; unsigned int ByteCount; /* 接收数据直到遇到回车符 */ ByteCount = XUartPs_Recv(&Uart, (u8*)RxBuffer, sizeof(RxBuffer)-1); if(ByteCount > 0){ RxBuffer[ByteCount]='\0'; // 添加字符串终止标志 printf("Received Message:%s\n",RxBuffer); // 将相同的消息反射回去作为响应动作 XUartPs_Send(&Uart,(u8 *)RxBuffer,strlen((const char *)RxBuffer)); } else{ fprintf(stderr,"Error during reception.\n"); } ``` 以上程序段体现了基本的回显机制——即每当检测到来自远端节点的一条完整记录之后立即将其原样返回给对方确认接收成功与否。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值