- 博客(26)
- 资源 (3)
- 收藏
- 关注
原创 f_sync有大用但不可以滥用
做项目,因为硬件没有设计停止写文件的按钮(或信号),设备断电会导致文件无法在windows显示。后来运用f_sync函数,每写一次SD卡,就用f_sync保存起来。大约每秒使用16次,连续十几个小时采集数据并保存。以为万无一失,然而悲剧发生了。有的设备前几小时数据正常,后面的数据直接出错。有的设备第一次就直接写入错误。解决办法: (1)每次使用之前都给SD卡格式化。...
2019-12-17 22:53:04
5255
2
转载 WPF优化:Freezable冻结对象
WPF虽然很美观,效果很炫,但是对资源的消耗也很大,尤其是初次接触WPF的人,因为很多地方虽然实现了想要的效果,但是由于经验问题,所以也会造成很大的资源浪费,好的程序,需要更好的优化。虽然可能只是节省了很少的一点资源,但是对整体程序运行的速度与稳定性来说,也许就起到了决定性的作用;每个地方都能做到一点优化,那么在成个程序中,优化的效果就会很明显,流畅、稳定,才是一个程序的健康状态。在MSDN上
2017-12-28 09:44:34
1647
转载 nuget安装本地nupkg文件
打开visual studio,菜单选择‘工具’->‘选项’ 然后接下来,选择‘程序包源’,把‘包括预发行版’打钩,然后安装需要的包到工程即可,如下图:本文转载自:/www.cnblogs.com/wjx0912/p/6893965.html
2017-12-27 11:36:59
5230
原创 C#打开选择文件对话框和选择目录对话框
1. 选择文件对话框,首先引用using Microsoft.Win32名称空间。private void BrowseButton_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); if(dialog.
2017-12-06 09:52:54
17932
转载 关于一般性保护错误的原因和解决办法
一 什么是一般性保护错误(GP)? 一般性保护错误(general protect简称GP),通常只是WINDOWS下的一个术语,我们现在也常把它引用到UNIX下指程序的崩溃。 本文主要探讨WINDOWS下面程序GP的原因,预防和解决办法。二 GP的原因 WIN32操作系统在发现某应用程序企图访问不属于自己的非法的内存区域时,将触发一般性保护错误,
2016-12-01 14:47:41
4779
原创 关于文件操作的多mode变换
在操作文件时,需要对文件内容进行读/写。首先来看下fopen函数: FILE * fopen(const char * path, const char * mode);path:文件的路径。mode:文件操作模式。mode说明:r 以只读方式打开文件,该文件必须存在。r+ 以读/写方式打开文件,该文件必须存在。rb+ 以读/写方式打开一个二进制文件,只允许读数据。
2016-11-21 16:43:41
499
原创 CVI减少CPU占用率
当设计CVI程序时,会发现CVI程序占用CPU的资源很多。接下来讨论下为何减少CPU的占用率。 当程序运行RunUserInterface()函数时,CVI的运行引擎处于一个连续的循环中,等待系统事件。为了内部状态有效,CVI需要处理并分派这些事件。每次在这个循环中,根据用户的休眠策略进入休眠状态。虽然休眠越多,资源消耗越小,但正是这个循环在消耗CPU资源。此外,我们接收
2016-11-09 11:09:04
1870
原创 fopen自动创建文件失败的原因
项目中需要在一个动态的路径下创建一个txt文件来保存数据。利用fopen()函数进行创建文件。调试半天没有成功,总是提示fp指针为空。经过查找资料,终于发现了问题所在。原博文地址:http://blog.youkuaiyun.com/u013485792/article/details/52327718总结: 1.路径不存在,文件也不存在,fopen打开失败 2.路径存
2016-11-08 15:59:56
13443
转载 多线程技术
多任务、多线程和多处理这些术语经常被交替地使用,但是它们在本质上是不同的概念。多任务是指操作系统具有在任务间快速切换使得这些任务看起来是在同步执行的能力。在一个抢占式多任务系统中,应用程序可以随时被暂停。使用多线程技术,应用程序可以把它的任务分配到单独的线程中执行。在多线程程序中,操作系统让一个线程的代码执行一段时间(被称为时间片)后,会切换到另外的线程继续运行。暂停某个线程的运行而开始执行另一个
2016-11-07 15:29:41
3866
原创 羊与车的问题
一、问题的提出“一个娱乐节目上,主持人给了你一个可以拿走一辆诱人的高级跑车的机会:你的面前有一模一样的三扇门,只有一扇们的后面有你梦寐以求的高级跑车,剩下两个门里就只有羊了(就是‘回家吧’)。主持人让你选定一个门,你选定后告诉了他,他诡异地说:‘我看你小子人品不错,有前途,这样吧,我给你个提示……’说着就把另一个不是你选的门打开了,告诉你里面是羊。现在只剩两扇门了,一扇是你刚开始选的,另一
2016-10-27 15:59:34
3021
1
原创 关于Confirm Popup中的YES,NO换成中文
CVI本身不可以改变英文,再次我们采取Windows编程方式改变。Win32 API中的函数MessageBox可以解决此问题。首先给一个例子:#includeint main(){ int result = MessageBox( NULL , TEXT("确认退出程序?") , TEXT("提示信息") , MB_ICONINFORMATION|MB_YESNO);
2016-10-25 15:01:44
1764
原创 UDP广播socket实现
UDP广播:const int MAX_BUF_LEN = 255;int main(int argc, char* argv[]){WORD wVersionRequested;WSADATA wsaData;int err;// 启动socket apiwVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersion
2016-10-21 12:20:09
1757
原创 多个控件共同应用一个回调函数
多个控件共同应用一个回调函数如何进行区分,首先看看回调函数形参:int CVICALLBACK ChangeCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2);panel:面板标识;control:控件的标识;event:事件标识;i
2016-10-14 10:14:19
1509
3
原创 CVI使用TCP/IP做客户端
客户端连接服务器。首先要注册一个客户端连接函数: ConnectToTCPServer(&conversationHandle, portnumber, address, TCPClientCB, NULL, 0); conversationHandle: 客户端句柄;portnumber: 服务器端口号;address:服务器IP地址;TC
2016-10-13 09:32:12
5193
原创 关于DeclareThreadSafeArrayVar的用法
Using a Thread Safe Array in Multiple Source FilesUse the DeclareThreadSafeArrayVar macro if you want to use the thread safe array in more than one source file. TheDeclareThreadSafeArrayVar macro
2016-10-12 16:31:11
556
原创 CVI I/O端口操作
函数:char inp (short portNumber);char outp (short portNumber, char byte);short inpw (short portNumber);long inpd (short portNumber);short outpw (short portNumber, short word);在使用这些函数时先调用int CVI
2016-10-12 16:28:43
718
转载 CVI与PLC通信MPI
2 MPI通信接口设计 21 MPI通信接口的基本原理 MPI通信的最高速率达187.5KB/S。IPC与PLC的通信分为两种物理连接方法一种是在工控机PCI总线上插接CP5611卡通过此卡和MPI电缆将IPC连接到S7系列PLC本机上集成的MPI接口形成MPI网络另一种方法是直接使用PC/MPI编程电缆将连接具体连接方式见图1二者的通信速度不一样。
2016-10-11 14:09:16
2158
原创 CVI多线程数据保护(多个线程操作同一安全变量)
有网友提出多个线程操作多个变量不能明确显示是否做到异步操作,现在我们来看下多个线程操作同一变量,是不是有序的进行呢?#include #include #include int CVICALLBACK ThreadFunction (void *functionData);int CVICALLBACK ThreadFunction1 (void *functionData);i
2016-10-11 09:33:45
3179
1
原创 CVI多线程数据保护(安全变量)
DefineThreadSafeScalarVar(,,);此函数应用#include #include #include int CVICALLBACK ThreadFunction (void *functionData);int CVICALLBACK ThreadFunction1 (void *functionData);int CVICALLBACK ThreadFunc
2016-10-10 16:11:03
1376
2
原创 CVI多线程数据保护(安全队列)
一个线程产生数据,加入安全队列;一个线程显示数据,读取安全队列。#include #include #include int CVICALLBACK ThreadFunction (void *functionData);int CVICALLBACK ThreadFunction1 (void *functionData);int threadID;int threadID1
2016-10-09 16:52:13
3272
原创 十六进制串口发送
字符串转化为十六进制,让串口发送数据: int hexdata, lowhexdata; unsigned short int hexdatalen = 0; unsigned char hexdatalenH8, hexdatalenL8; int len; int i; len = strlen ( str ); if(len == 0) { MessagePopup
2016-10-09 15:31:01
2375
原创 CVI面板全屏操作
函数使面板在载入时全屏:int ScreenPro (int panel){ int MonitorID = 0; int height = 0; int width = 0; GetMonitorFromPanel (panel, &MonitorID); GetMonitorAttribute (MonitorID, ATTR_HEIGHT, &height); GetMon
2016-10-09 15:22:14
2881
原创 CVI多线程数据保护(线程锁)
两个线程操作全局变量,一个线程显示全局变量,主线程一直在打印************#include #include #include int CVICALLBACK ThreadFunction (void *functionData);int CVICALLBACK ThreadFunction1 (void *functionData);int CVICALLBACK Thr
2016-10-09 14:06:35
4022
2
原创 CVI使用数据库时,在未装CVI的计算机上运行错误。
在用NSIS打包时,将cvidb32.dll文件加入打包文件即可。附带SQL ToolKit2.1点击打开链接
2016-09-23 15:56:21
863
转载 CVI 键盘输入信息读取记录TXT
如何用文本文件记录键盘按键及时间信息。如下:声明一个文件句柄:static int gLogFile = 0; 复制代码程序开始时初始化它:gLogFile = OpenFile("d:\\TestLog.txt",VAL_READ_WRITE,VAL_APPEND,VAL_ASCII);复制代码
2016-09-01 16:47:32
4074
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人