原创 Labwindows/cvi8.5学习日志(55)----数据格式化

2010-9-8 09:35 8408 9 11 分类: 软件与OS


9ba5cec0-5a7a-4230-b2bb-0ee7a22bfbf0.jpg


//*****************************************************************************
// Labwindows/cvi8.5  数据格式化
// Fmt 函数的各种用法
// szlihongtao
// 2010-09-08
//*****************************************************************************
#include <cvirte.h>  
#include <formatio.h>
#include <userint.h>
#include <utility.h>
#include "fmt.h"
//*****************************************************************************
static int panelHandle;
char Current_Directory[MAX_PATHNAME_LEN];
char String[64];
//*****************************************************************************
int CVICALLBACK cb_2string (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 int temp;
 
 switch (event)
 {
  case EVENT_COMMIT:
  {
   GetCtrlVal(panel,control,&temp);
   //Fmt(String,"%i",temp);
   //Fmt(String,"%s<%i",temp);
 /*
   [b1], 表明temp为1字节的整数
   当输入 24时候,显示为24。 
   当输入 256时候,显示为0。
   当输入 257时候,显示为1  
 */
   //Fmt(String,"%s<%i[b1]",temp); 
   
 /*
   [w2], 表明在函数将整数转换为字符串格式的情况下,整数修饰符w 规定将存储字符串的精确字节数
   当输入  3时候,显示为 3。注意,前面有1个空格 
   当输入 56时候,显示为56。
   当输入 257时候,显示为*7,表示显示溢出  
 */
   //Fmt(String,"%s<%i[w2]",temp); 
 /*
   , 表明在函数将整数变量看成有符号的二进制补码。这是默认的整数表示法,因此,函数可以不要 s 修饰符
   当输入 -233时候,显示为 -233
   当输入 56时候,显示为56。
 */          
   Fmt(String,"%i",temp);
   SetCtrlVal(panel,PANEL_STRING,String);
   break;
  }
 }
 return 0;
}
//*****************************************************************************
int CVICALLBACK cb_2string3 (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 double temp;


 switch (event)
 {
  case EVENT_COMMIT:
  {
   GetCtrlVal(panel,control,&temp);
 
  /*
   [e2], 规定数据以科学计数法来表示,n可选,规定指数的数据个数
   [p3], 规定数据的精度,如果省了修饰符pn,默认为p6
   例如输入122.34,显示为  1.223e+02
  */
   //Fmt(String,"%f[e2p3]",temp);
   
  /*
   [wn], 规定字符串的精确字节数
   [r], 数据四舍五入,默认为截尾
  */
   //Fmt(String,"字符串为%f[w6r]",temp);
 
  /*
   [r], 数据四舍五入,默认为截尾
   例如输入122.374,显示为 122.374,默认小数点右边的数据个数为6位
  */
   Fmt(String,"字符串为%f[r]",temp);
             
   SetCtrlVal(panel,PANEL_STRING_3,String);
   break;
  }
 }
 return 0;
}
//*****************************************************************************
int CVICALLBACK cb_2int (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 int temp;
 
 switch (event)
 {
  case EVENT_COMMIT:
  {
   GetCtrlVal(panel,control,String);
   Fmt(&temp,"%i<%s",String);
   SetCtrlVal(panel,PANEL_NUMERIC_2,temp);
   break;
  }
 }
 return 0;
}
//*****************************************************************************
int CVICALLBACK cb_2double (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 double temp;
 
 switch (event)
 {
  case EVENT_COMMIT:
  {
   GetCtrlVal(panel,control,String);
   Fmt(&temp,"%f<%s",String);
   SetCtrlVal(panel,PANEL_NUMERIC_4,temp);
   break;
  }
 }
 return 0;
}
//*****************************************************************************
void init(void)
{
 char *ptr;
 int Hours, Minutes, Seconds;
 int Month, Day, Year;
 
 GetDir(Current_Directory); // Gets the current working directory on the default drive.
 SetCtrlVal(panelHandle,PANEL_STRING_GETDIR,Current_Directory); // 在默认驱动器上活动当前的工作目录
 
 cb_2string (panelHandle, PANEL_NUMERIC, EVENT_COMMIT,0, 0, 0);
 cb_2string3 (panelHandle, PANEL_NUMERIC_3, EVENT_COMMIT,0, 0, 0);
 cb_2int (panelHandle, PANEL_STRING_2, EVENT_COMMIT,0, 0, 0);
 cb_2double (panelHandle, PANEL_STRING_4, EVENT_COMMIT,0, 0, 0);
 
#if 0 
  ptr=DateStr();
 SetCtrlVal(panelHandle,PANEL_STRING_DATE,ptr);
 
  ptr=TimeStr();
 SetCtrlVal(panelHandle,PANEL_STRING_TIME,ptr);
#else     
 GetSystemDate (&Month, &Day, &Year);
 Fmt(String,"%i[w4p0]年%i[w2p0]月%i[w2p0]日",Year,Month,Day);
 
 SetCtrlVal(panelHandle,PANEL_STRING_DATE,String);
            
 GetSystemTime (&Hours, &Minutes, &Seconds);   
 Fmt(String,"%i[w2p0]:%i[w2p0]:%i[w2p0]",Hours,Minutes,Seconds);
 
 SetCtrlVal(panelHandle,PANEL_STRING_TIME,String);
#endif
}               
//*****************************************************************************
int main (int argc, char *argv[])
{
 if (InitCVIRTE (0, argv, 0) == 0)
  return -1; /* out of memory */
 if ((panelHandle = LoadPanel (0, "fmt.uir", PANEL)) < 0)
  return -1;
 init();
 DisplayPanel (panelHandle);
 RunUserInterface ();
 DiscardPanel (panelHandle);
 return 0;
}
//*****************************************************************************
int CVICALLBACK QuitCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
 {
  case EVENT_COMMIT:
   QuitUserInterface (0);
   break;
 }
 return 0;
}
//*****************************************************************************
//*****************************************************************************
//*****************************************************************************


 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2015-11-26 16:06

请问%s<%d是什么意思呀???

用户1667182 2012-12-3 11:15

特别好,有时间和格式化的资料,太有用了!谢谢
相关推荐阅读
sz_lihongtao 2011-04-20 21:32
32bit无符号数快速开平方根
//*******************************************************************************// 32bit无符号数开平方根// ...
sz_lihongtao 2011-04-20 12:12
STM32学习日志(24)----使用dsp库的FFT函数测相位
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 14:57
STM32学习日志(23)----使用dsp库的FFT函数.rar
attachment download/**  ****************************************************************************...
sz_lihongtao 2011-04-19 10:39
stm32 dsp lib V2.0
attachment downloadattachment download...
sz_lihongtao 2011-04-19 10:37
STM32学习日志(22)----使用DMA功能自动更新PWM的输出
attachment download/*******************************************************************************编...
sz_lihongtao 2010-09-08 21:59
Labwindows/cvi8.5学习日志(56)----任意波形发生器
//******************************************************************************// Labwindows/cvi8.5...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条