【问题标题】:.inc File Not Included Reliably.inc 文件不可靠地包含在内
【发布时间】:2011-09-06 15:35:46
【问题描述】:

我正在编写一些继承自其他程序员的 HTML 代码,它使用以下形式的 include 语句:

~inc:filename.inc~

但是,我遇到的问题是这个包含语句不能可靠地工作。大约 90% 的时间,包含文件中的所有信息都可以毫无问题地导入,但是当我刷新页面时,所有这些内容经常会丢失,当我再次刷新时又会返回。我已经尝试将包含语句更改为更广泛使用的形式,例如:

<!-- FILE="filename.inc"-->
<!-- virtual="../filename.inc"-->
<!-- virtual="/filename.inc"-->

但这只会导致文件始终不被包含在内。我一直在互联网上的其他地方四处寻找,但似乎找不到任何解决方案,甚至找不到任何使用 '~inc:' 包含语句的方法。

值得注意的是,此 HTML 是从托管在低功耗设备上的固件加载的,并且页面上的某些项目会定期更新。更新方法是否可能运行得太快而硬件无法处理?

有人对我如何解决这个问题有任何想法吗?

【问题讨论】:

  • 这是什么模板语言,您使用的是什么 HTTP 服务器?
  • 我正在使用嵌入在 MicroChip PIC 上的 Web 服务器,使用他们的 TCP/IP 堆栈。我不太清楚你所说的“模板语言”是什么意思——我写的所有东西都是用 HTML 或 Javascript 写的。
  • 这是非常低级的。我认为我们需要更多地了解您正在使用的确切硬件。你有它的文件吗?
  • 获取 TCP/IP 堆栈文档的最佳方式是下载 Microchip 的应用程序库,网址为:microchip.com/stellent/… PIC 本身的信息可以在这里找到:microchip.com/wwwproducts/Devices.aspx?dDocName=en534549

标签: html include pic firmware microchip


【解决方案1】:

好的,所以我下载了应用程序库文档并查看了TCPIP Stack Help.chm,找到了HTTPIncFile函数:

void HTTPIncFile(ROM BYTE* cFile);

用户不应直接调用此函数,而应在其 HTML 代码中以 ~inc:filename.ext~ 的形式添加动态变量,以在指定位置包含(例如)文件“filename.ext”。 MPFS2 Generator 实用程序将处理其余部分。

所以看起来您的原始语法是唯一记录在案的语法。现在,虽然它说不要直接调用该函数,但由于您遇到问题,可能值得这样做,看看您是否得到相同的结果。

还要注意:

当 curHTTP.callbackPos 为 0 时,打开文件并写入尽可能多的字节。然后将当前位置保存到 curHTTP.callbackPos 并关闭文件。在随后的调用中,读取从保存的位置开始并继续。一旦到达输入文件的末尾,curHTTP.callbackPos 就会被设置回 0 以指示完成。

这纯粹是推测,但如果您尝试多次包含文件,或者尝试同时包含一个或多个文件,则可能会遇到问题。如果未包含文件,则可能是因为 callbackPos 未重置。我还假设您没有尝试修改模板文件,但您确实说过:

页面上的某些项目会定期更新

如果您希望包含的文件发生变化,您可能会遇到并发问题。您可能需要借助锁定或同步来确保不会发生这种情况,或者尝试在 include 方法上等待自旋,检查偏移量,直到成功包含正数字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2010-10-10
    相关资源
    最近更新 更多