注冊 登錄
LabVIEW 返回首頁

longd99的個人空間 http://www.7013934.live/?32294 [收藏] [復制] [分享] [RSS]

留言板

facelist doodle涂鴉板

您需要登錄后才可以留言 登錄 | 注冊


FASM 2014-5-10 11:21
longd99: 教主,好久沒來了,換服務器了,速度上來了,來開課吧!
啊,這個論壇還活著啊?以為'壽終'了哪!今天無意才看到.
calabazas 2012-11-28 03:01
加油啊
FASM 2012-7-23 19:57
longd99: 教主,請教個問題,CVI操作數據庫按照他的flowchart好像主要有三種方法:比如用DBBeginMap,DBActivateSQL或DBImmediateSQL,不知那種方法更通用,更正規一些呢? ...
各有其用途:
DBBeginMap 大量讀寫數據時性能更好一些
DBActivateSQL 使用最靈活
DBImmediateSQL 主要用于命令,無返回(如執行事務)
FASM 2012-2-14 12:16
longd99: 教主,之前問的“當打開多個其它窗口時經常出現某個窗口會在視頻窗口和坐標窗口之間”的問題完美解決了,畫坐標用的窗口,不用CVI創建,用windows API創建,作為 ...
呵呵,恭喜恭喜!
FASM 2011-11-22 19:13
longd99: 這種方法是不錯,但是如果用戶刪除計劃任務的情況下,就不行了。
不知是否有類似串口中斷回調函數的方法,到時自動執行回調函數?
系統鉤子應該可以吧?但不想搞 ...
系統還真沒有這樣的回調?紤]性能的話,不妨在一個線程中用可等的計時器(CreateWaitableTimer)來完成。類似一個高精度計時器對象。
FASM 2011-11-22 13:43
longd99: 是這樣,本來程序在啟動時讀取系統時間來計算儀器的使用天數,但是如果儀器軟件幾周一直不關機就不能觸發讀取系統時間的指令了,也就是軟件不重啟就不能讀系統時 ...
你沒用過windows的計劃任務嗎?就是你設定一個定時處理的任務程序,然后系統就會在指定時間去調用這個程序。

如此你可以寫一個小程序(用來向你的主程序發送時間信息),然后把這個小程序加入計劃任務(每天九點),OK!
FASM 2011-11-22 11:34
longd99: 請教仁兄,在一個CVI程序中,我想讓程序每天運行到早上九點鐘就自動讀取一次系統時間,其他時間不讀取怎樣實現好?
因為程序還有別的事做不可能時時檢測系統時間 ...
很奇怪的需求?!不過,你可以借助系統計劃任務來完成這件事( 不是進程內的回調事件,可以說是進程間的事件通知 )。
FASM 2011-8-26 14:44
longd99: 謝謝你,終于OK了,只能用VC2008的RTE,VC2010得也提示找不到mesa.dll。
順便問一下你在用nsis吧?是不是nsis的腳本比inno要難一些?對于2個工具都是初學者來說? ...
是的,我現在用的NSIS。昨天搞混了,給你回的是NSIS的腳本。
nsis腳本談不上難,只是語法比較‘晦澀’。不像inno更接近高級語言,更容易讓人理解。它的執行效率確實比inno要高一些。
nsis談不上越來越流行,inno的用戶還是多一些(容易上手)。其實這些東西最終都是給工業用戶用的,民用以后的發展方向是‘云端’軟件(不需要安裝,但必須聯網)。
FASM 2011-8-25 17:05
longd99: 你太偉大了!
剛用inno 很多腳本不懂,我下到VC Redistributable Package 怎樣集成到安裝包里 ,能否提示一下?
如果不用安裝包,用綠色DLL庫的方法,是否可以實 ...
很簡單啊,加一個節:
Section -Post                     //釋放完文件后會自動調用此節代碼
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer
  ExecWait '"$INSTDIR\InstallExc.exe"'       //執行安裝目錄下的exe文件并等待結束(可以是你自己寫的,也可以是另外一個安裝包)
  call loadDll                          //調用一個自己寫的函數
  delete "$INSTDIR\xxx.sys"   //清除***
SectionEnd

SetPluginUnload  alwaysoff

Function loadDll          //自己的函數
  StrCpy $1 ${NSIS_MAX_STRLEN}          ; assign memory to $0
  System::Call 'UfsdShell::DllInstall(i, t) i(1, NULL).r1'  //可以直接調用DLL中的函數

; 最后一次插件調用必須沒有 /NOUNLOAD 參數,否則 NSIS 將不能在安裝結束后刪除
; 臨時的 DLL 文件

  SetPluginUnload manual
; 什么都不作 (目的就是為了卸載 System.dll)
  System::Free 0                                   //安裝環境清理
FunctionEnd
FASM 2011-8-25 16:27
longd99: 我用下面的代碼:
#include "windows.h"
int main (int argc, char *argv[])
{
        HMODULE  hinstLib;
        hinstLib=LoadLibrary("mesa.dll& ...
由于應用程序配置不正確,應用程序未能啟動。重新安裝應用程序可能會糾正這個問題。
這個就是我上面說的Side-by-Side機制。就是vc90的RTL沒有正確識別所致!
你到微軟網站下個Microsoft Visual C++ 2010 Redistributable Package
包安裝一下就好了(很小,4.xM)。
你也可以把這個包集成到你的安裝包里。
FASM 2011-8-25 13:18
longd99: 找到問題了可能是因為2010SP1版的mesa.dll依賴VC++9.0運行庫的原因,放在程序目錄下也是不可以的。之前說放到程序目錄下可以是我搞錯了,放的2009Sp1版的mesa.dl ...
我覺得不應該是mesa.dll找不到,你可以用loadlibrary試一下。另外,vc80以后引入了一個Side-by-Side執行的概念,這個概念本來是.NET提出來的,但是Windows后來將這個概念集成到操作系統層面上來了。
系統在加載程序A之前,除了查看PE格式里面A所依賴的Dll信息,還會查看A的manifest文件。Manifest文件保存了Windows可執行文件(包括exe和dll文件)要運行起來的環境設置信息,文件名一般是可執行文件的文件全名加上.manifest。例如notepad.exe的manifest文件就應該是notepad.exe.manifest。例外有的程序將manifest文件直接嵌入到可執行文件的資源里面了。
一個簡單例子:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
</trustInfo>
<dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8'
                        processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
</dependency>
</assembly>
說明這個程序依賴于CRT 9.0,而且是調試版的,CPU架構是32位的CPU。這樣系統可以做到加在同一個DLL的不同版本。
FASM 2011-7-30 22:20
longd99: 謝謝!我可能是理解你的意思了,MotRunFG我是定義的全局變量,如果我用volatile來修飾MotRunFG應該就不會發生你說的問題了吧?
還有你說的這種編譯器優化CVI中沒 ...
有沒有優化,你看看反匯編代碼就知道了.無需我多說!
如果你用volatile來修飾變量,當然沒有問題。
FASM 2011-7-30 20:24
longd99: 謝謝!其實這個上位機程序是一個DLL,單線程,我用CVI做的EXE調用測試,沒有發現問題,以后要給VB調用,不放心,所以請您看看!
還有我的MotRunFG復位是在下位機 ...
你沒明白我的意思。
譬如,你的MotRunFG這個局部變量正常的訪問應該是[ebp-x]這種形式,但是如果被編譯器優化后變成了mov eax,[ebp-x]這種形式,以后所有對這個變量的操作實際上都是對eax這個寄存器進行操作。效率非常高,而且單線程也沒有問題,但是多線程就成為兩個不同的操作了。
FASM 2011-7-29 21:22
longd99: 向您請教個問題,CVI環境,我用上位機通過RS232向下位機發送一個命令,函數如下,下位機收到命令執行完正常應答后上位機復位MotRunFG(在上位機RS232接收中斷中復 ...
如果是順序性執行,應該沒有問題。如果復位和判斷在兩個不同的線程則可能發生永遠不會復位的現象(編譯優化、線程優先級都會造成影響
)。
eagle1208 2010-12-15 21:10
    
antaeus 2010-12-8 12:53
兩根針
antaeus 2010-12-6 08:25
周一好啊
暗殤 2010-12-4 12:37
  
VI Package Manager 2010 工具下載

QQ|小黑屋|無圖瀏覽|手機版|網站地圖|虛擬儀器家園 ( 滬ICP備13044638號-3 )

GMT+8, 2020-10-21 06:21 , Processed in 0.018426 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回頂部
香港赛马会排位表资料 河南体彩11选五开奖 期货配资是正规的吗 快乐双彩历史开奖结果 节能环保股票推荐 天津11选5开奖双色球开奖 金十数据 福彩双色球基本走势图 广西快乐双彩开奖号码分布图 快三开奖数据 沈阳股票配资公司