include Cerious Software’s Thumbs Plus, TriVista Technology’s Simple LandScape and Photo
- 格式:pdf
- 大小:178.91 KB
- 文档页数:10
SkyAzúl, Equipment Solutions301-371-61261FAULT REPORTING AND FAULT CODESSystem Fault Codes provide one of the most important ways to quickly locate and assess problems in your MicroGuard ®System. Please review this section carefully.FAULT DIAGNOSTIC PROCEDURESEach time the System is turned on, it goes through a self-testing process lasting two to three seconds that automatically detects any Faults in the System. During normal operation, a Self-Test can be initiated at any time by pressing the TEST button on the Display Console. Fault conditions in external sensors are detected without a System Self-Test.Faults detected in the System during Self-Test, are indicated on the Display Console in the following way:•The word FAULT will appear in the information area of the left Display.•The RED LAMP will illuminate and the AUDIBLE ALARM will sound.Diagnosis of a Fault is obtained by PRESSING and HOLDING the TEST button. The System will then go through a Self-Test followed by the appearance of a Fault Code screen. The Fault Code screen will remain visible as long as the TEST button is pressed. Information will be displayed on the screen in the four groups shown in Figure 5.0.Note: Always repair Analog Sensor Faults (AAA) prior to investigating other faults. A complete listing of all possible Fault Codes and the description of each is listed on the following pages.000 NO FAULTS001TX.0PISTON PRESSURE SENSOR002 TX.1 ROD PRESSURE SENSOR 004 AIN2 EXTENSION SENSOR 008 AIN3 BOOM ANGLE SENSOR 016 AIN4 S’STRUCTURE ANGLE SENSOR 032 AIN5 SWING POTENTIOMETER “A” 064AIN6SWING POTENTIOMETER “B”Group AAA Analog Sensors0 NO FAULTS1 1 DIGITAL INPUT AND OUTPUT2 2 ANALOG INPUT AND OUTPUT44DISPLAY UNITGROUP B IO FAULTS00 NO FAULTS 01 1 PROGRAM ROM 02 2 DUTY ROM 04 4 SCRATCHPAD RAM 088PERSONALITY ROMGROUP CC MEMORY FAULTS00 NO FAULTS 01 1 NO DUTY FOUND 022CURRENT DUTY BADGROUP DD GENERAL FAULTSFIGURE 5.0 FAULT CODES2SkyAzúl, Equipment Solutions 301-371-61263018 Fault 002 & 016 019 Fault 001, 002, & 016 020 Fault 004 & 016 021 Fault 001, 004, & 016 022 Fault 002, 004, & 016023 Fault 001, 002, 004, &016 024 Fault 008, & 016025 Fault 001, 008, & 016026 Fault 002, 008, & 016027 Fault 001, 002, 008, &016028 Fault 004, 008, & 016 029 Fault 001, 004, 008, &016 030 Fault 002, 004, 008, &016 031 Fault 001, 002, 004,008, & 016 032 Swing Pot “A” 033 Fault 001, & 032 034 Faults 002, & 032035Faults 001, 002, &AAA Fault Codes continuedFAULT No . DESCRIPTION036 Faults 004 & 32 037 Faults 001, 004, &032 038 Faults 002, 004, &032 039 Faults 001, 002, 004, & 032 040Faults 008, & 032 041 Faults 001 008, &032 042Faults 002, 008, &032 043Faults 001, 002, 008, & 032 044Faults 004, 008, &032 045Faults 001, 004, 008, & 032 046 Faults 002, 004, 008, & 032 047 Faults 001, 002, 004, 008, & 32048 Faults 016 & 032 049Faults 001, 016, &032 050 Faults 002, 016, &032 051 Faults 001, 002, 016, & 032 052Faults 004, 016, &AAA Fault CodesFAULT No. DESCRIPTIONFigure 5.2 AAA Analog Sensor Fault CodesNumbers 1-127 continuedSkyAzúl, Equipment Solutions 301-371-61264053 Faults 001, 004, 016,& 32 054 Faults 002, 004, 016,& 32 055 Faults 001, 002, 004,016, & 32 056 Faults 008, 016, &032 057 Faults 001, 008, 016,& 032 058 Faults 002, 008, 016,& 032 059 Faults 001, 002, 008,016, & 032 060 Faults 004, 008, 016,& 032 061 Faults 001, 004, 008,016, & 032 062 Faults 002, 004, 008,016, & 032 063 Faults 001, 002, 004, 008, 016, & 032 064 SWING POT “B” 065 Faults 001 & 064 066 Faults 002 & 064 067 Faults 001, 002, &064 068 Faults 004 & 064 069 Faults 001, 004, &064 070 Faults 002, 004, &064 071Faults 001, 002, 004,AAA Fault Codes continuedFAULT No . DESCRIPTION072 Faults 008, & 64 073 Faults 001, 008, & 64 074 Faults 002, 008, &064 075 Faults 001, 002, 008,& 064 076 Faults 004, 008, &064 077 Faults 001, 004, 008,& 064 078 Faults 002, 004, 008,& 064 079 Faults 001, 002, 004,008, & 064 080 Faults 016 & 064 081 Faults 001, 016 & 064 082 Faults 002, 016 & 064 083 Faults 001, 002, 016& 064 084 Faults 004, 016, &064085 Faults 001, 004, 016,& 064 086 Faults 002, 004, 016,& 064 087 Faults 001, 002, 004,016, & 064 088 Faults 008, 016, &064 089 Faults 001, 008, 016,& 064 090Faults 002, 008, 016,AAA Fault Codes continuedFAULT No . DESCRIPTIONFigure 5.2 AAA Analog Sensor Fault CodesNumbers 1-127 continuedSkyAzúl, Equipment Solutions301-371-61265091 Faults 001, 002, 008,016, & 064 092 Faults 004, 008, 016,& 064 093 Faults 001, 004, 008,016, & 064 094 Faults 002, 004, 008,016, & 064 095 Faults 001, 002, 004, 008, 016, & 064 096 Faults 032, & 064 097 Faults 001, 032, &064 098 Faults 002, 032, &064 099 Faults 001, 002, 032,& 064 100 Faults 004, 032, &064 101 Faults 001, 004, 032,& 064 102 Faults 002, 004, 032,& 064 103 Faults 001, 002, 004,032, & 064 104 Faults 008, 032, &064 105 Faults 001, 008, 032,& 064 106 Faults 002, 008, 032,& 064 107 Faults 001, 002, 008,032, & 064 108 Faults 004, 008, 032,& 064 109Faults 001, 004, 008,AAA Fault Codes continuedFAULT No . DESCRIPTION110 Faults 002, 004, 008,032, & 064 111 Faults 001, 002, 004, 008, 032, & 064 112 Faults 016, 032, &064 113 Faults 001, 016, 032,& 064 114 Faults 002, 016, 032,& 064 115 Faults 001, 002, 016,032, & 064 116 Faults 004, 016, 032,& 064 117 Faults 001, 004, 016,032, & 064 118 Faults 002, 004, 016,032, & 064 119 Faults 001, 002, 004, 016, 032, & 064 120 Faults 008, 016, 032,& 064121 Faults 001, 008, 016,032, & 064 122 Faults 002, 008, 016,032, & 064 123 Faults 001, 002, 008, 016, 032, & 064 124 Faults 004, 008, 016,032, & 064 125 Faults 001, 004, 008, 016, 032, & 064 126 Faults 002, 004, 008, 016, 032, & 064 127Faults 001, 002, 004,AAA Fault Codes continuedFAULT No . DESCRIPTIONFigure 5.2 AAA Analog Sensor Fault CodesNumbers 1-127 continuedSkyAzúl, Equipment Solutions 301-371-612660 No Faults1Digital Input and 2 Analog Input andOutput 3 Faults 1 & 2 4 Display Unit 5 Faults 1 & 4 6 Faults 2 & 47Faults 1, 2, & 4FAULT No .DESCRIPTION 00 No Faults01 Program ROM 02 Duty ROM 03 Faults 01 & 02 04 Scratchpad RAM 05 Faults 02 & 03 06 Faults 02 & 04 07 Faults 01, 02, & 04 08 Personality ROM 09Faults 01, & 08 10Faults 02 & 08 11Faults 01, 02, & 08 12Faults 04 & 08 13Faults 01, 04, & 08 14 Faults 02, 04, & 0815Faults 01, 02, 04, &FAULT No .DESCRIPTION 0No Faults01No Duty02 Current Duty Bad03Faults 01 & 02FAULT No .DESCRIPTIONFigure 5.3 B IO Fault CodesFigure 5.5 DD General Fault CodesFigure 5.4 CC Memory Fault Codes。
C++常见的编译错误中英对应翻译对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家:fatal error C1003: error count exceeds number; stopping compilation中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004: unexpected end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083: Cannot open include file: 'xxx': No such file or directory中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903: unable to recover from previous error(s); stopping compilation中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001: newline in constant中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006: #include expected a filename, found 'identifier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007: #define syntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008: 'xxx' : unexpected in macro definition中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE"1"”error C2009: reuse of macro formal 'identifier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复error C2010: 'character' : unexpected in macro formal parameter list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’error C2014: preprocessor command must start as first nonwhite space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015: too many characters in constant中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = 'error';”error C2017: illegal escape sequence中文对照:(编译错误)转义字符非法分析:一般是转义字符位于' ' 或" " 之外,例如“char error = ' '\n;”error C2018: unknown character '0xhh'中文对照:(编译错误)未知的字符0xhh分析:一般是输入了中文标点符号,例如“char error = 'E';”中“;”为中文标点符号error C2019: expected preprocessor directive, found 'character'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”error C2021: expected exponent value, not 'character'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039: 'identifier1' : is not a member of 'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041: illegal digit 'x' for base 'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数error C2048: more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的defaulterror C2050: switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch ("a")”中表达式为字符串,这是非法的error C2051: case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case "a"”中“"a"”为字符串,这是非法的error C2052: 'type' : illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057: expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的error C2058: constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059: syntax error : 'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064: term does not evaluate to a function中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数error C2065: 'xxx' : undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。
Congratulations on your purchase of the Timex ®Ironman* Data Link ®USB watch.ⅢIt’s a feature-rich Ironman sport watch.ⅢIt’s a PDA for your wrist.This simple guide will get you started with your new Timex Ironman Data Link USB watch and help you use the many features of the watch and software.For complete instructions on using this watch, see the Watch Help and Software Help in the software. Printable versions are loaded automatically onto your com-puter when you install the Timex Data Link USB software.WHAT YOU NEEDQUICK START GUIDEINSTALL THE SOFTWAREWhile a computer is not needed for most watch functions, the software makes watch setting easy and unlocks powerful features such as appointment and contact management. Every feature can be set simply and easily with a computer.You need the following to take advantage of all the watch functions:ⅢThe included CD-ROM with the Timex Data Link ®USB software.ⅢThe supplied USB cable.ⅢA PC with the following configuration:•Microsoft ®Windows ®98 2nd Ed.,2000 (with Service Pack 1 or higher),ME, XP or higher operating system •30 MB of free hard disk space •USB port The mini CD-ROM works in any standard CD-ROM drive with a tray; place the CD-ROM in the center of the tray. Visit to download the software if you have any trouble.To install the software, load the CD-ROM into your computer. A menu should auto-matically appear (if not, run INTRO.EXE on the CD). Select "Install Timex Data Link USB." If you wish to keep track of your workouts on the PC, you may also select "Install Timex Trainer."BATTERYThe life of a factory-installed battery is estimated to be about 2 years, but battery life will vary depending on actual usage.When the watch's battery is low, the mes-sage LO BATT is displayed in place of the date, at the beginning of each day. The reminder disappears when you change the display. You should replace the battery as soon as possible. While the watch will continue to run, a low battery may cause communication problems.To avoid permanent damage to the watch,Timex strongly recommends that you have the battery replaced by a jeweler.WATER RESISTANCEThis watch is rated as water resistant as marked on the watch. A 100 m water-resistant watch withstands pressure to 172p.s.i. (equals immersion to 330 feet or 100meters below sea level). A 50 m water-resistant watch withstands pressure to 86p.s.i. (equals immersion to 165 feet or 50meters below sea level).Do not press the watch buttons while under water, as the watch will not remain water resistant.TECHNICAL SUPPORTIf you have any questions about the opera-tion of your watch or its software, please refer to the Watch Help and the Software Help. For any questions not answered by the Help, check the Timex website or call the support line:•Website: •Technical support line in the US and Canada: 1-800-328-2677•Technical support line from other than US and Canada: 1-501-370-5775CONNECT THE WATCHConnect the USB cable to your watch as follows:1.Insert the rectangular end of the USB cable into an open USB port on your PC.2.Hook the bottom of the connector on the other end of the cable to the left side of the watch below the contacts.3.Pull the connector lever down andhook the upper end of the connector to the watch.4.The software automatically reads the watch’s data.Indicates how much of the watch data memory will be used by the data you have selected to send. If it is more than 100%, select less data to send.Click here to send data from the computer to the watch.IMPORTANTThe Timex Ironman Data Link USB Watch is not a medical device. It should not be used in the diagnosis, treatment, or pre-vention of any disease or other medical condition. Users should have alternate methods for such purposes.RUN THE SOFTWARETRY IT OUTThe software comes loaded with sample data, so if you want to try sending data to your watch right away, just click the SEND button in the software. Then disconnect the watch and you should see the data in the watch. See the other side of this sheet for instructions on operating the watch.*IRONMAN is a registered trademark of World Triathlon Corporation. TIMEX, DATA LINK, and NIGHT-MODE are registered trademarks of Timex Corporation. Microsoft,Windows, and Outlook are registered trademarks ofMicrosoft Corporation in the U.S. and in other countries.INDIGLO is a registered trademark of Indiglo Corporation in the U.S. and other countries.Number of data entries to be sent.Move mode up or down in the list (reflected in the watch).Add a mode.You can have multiple versions of one mode (e.g., two Contact modes,one business and one personal).Edit mode data.Refresh auto-imported data (see Software Help).COMPLIANCEFCC Notice:Tested To Comply With FCC Standards FOR HOME OR OFFICE USE.This device complies with Part 15 of the FCC Rules. Operation is subject to the fol-lowing two conditions: (1) this device may not cause harmful interference, and (2)this device must accept any interference received, including interference that may cause undesired operation. Caution:Any changes or modifications not expressly approved by Timex Corporation could void the user’s authority to operate this equip-ment.Industry Canada Notice:This Class B digi-tal apparatus complies with Canadian ICES-003. Cet appareil numérique de la classe B est conforme à la norme NMB-003 du Canada.ENTER YOUR INFORMATIONDouble-click on an entry to edit it.© 2003 Timex Corporation. All rights reserved.D: 990-095194 G: 991-094067WATCH DISPLAYWATCH CONTROLSⅢMODE ButtonPress the MODE button to cycle through the watch modes.ⅢCrownScrolling – In any mode (other than Time of Day), turn the Crown to scroll through the entries. INDIGLO®night-light –E lectrolumines-cent technology used in the INDIGLO night-light illuminates the entire watch face at night and in low-light conditions. Press the crown to activate; hold for 4 seconds to activate NIGHT-MODE® fea-ture. for 8 hours(see Options).Setting – Pull the Crown out to set. Turn the Crown to change the flashing item’s value. Press the MODE button to advance to the next item or STOP/RESET to return to the previous item. Push the Crown in to save your changes and return to the normal display.TIME OF DAY COUNTDOWN TIMERⅢSettingPull out the Crown to set. Turn the Crown to changethe flashing item’s value. Press MODE to set thetime, time format, date, date format, year, day of theweek or week number, and time zone name. Push inthe Crown to save your changes.ⅢTime ZonesPress STOP/RESET once and hold it to display thesecond time zone; press twice and hold to displaythe third time zone. Continue holding to switch tothe displayed time zone.ⅢNext Appointment/OccasionPress START/SPLIT once and hold to display the nextAppointment; press twice and hold to display thenext Occasion.CHRONOGRAPHTip•Use the PC software to set the watch; it’s mucheasier than using the buttons.Tips•Lap/split times can be recalled while the chrono-graph is running or after it is stopped.•When you take a split, the display freezes for 10seconds, then resumes with the next lap. PressMODE to immediately display the next lap.•When the chronograph is reset (at zero), you canchange the format of the display. Pull the Crownout and turn to select the positions of the lap andsplit times or the time of day.NOTEAPPOINTMENTDEMOYour watch may be preloaded with a running Demomode. You may exit the demo by pressing the MODEbutton. The demo is deactivated when you set thedate or send data to the watch.Alarm or Appt Alertwithin 12 HoursTimelineTime inHH:MM ss Format。
大连东软信息学院Linux 模拟题模拟题一、选择题一、选择题1.设置文件偏移量的系统调用是.设置文件偏移量的系统调用是A. truncate A. truncateB. sync B. sync B. sync C . lseek C . lseekD.create 2.Fdata 系统调用的功能是系统调用的功能是A.A.刷新所有缓存到磁盘刷新所有缓存到磁盘刷新所有缓存到磁盘B.刷新缓存中某个文件的所有信息到磁盘刷新缓存中某个文件的所有信息到磁盘C.C.刷新缓存中某个文件的数据到磁盘刷新缓存中某个文件的数据到磁盘刷新缓存中某个文件的数据到磁盘D. D.刷新磁盘中某个文件的属性信息到磁盘刷新磁盘中某个文件的属性信息到磁盘3.通过文件属性中的uid 获得文件拥有者名字的系统调用是获得文件拥有者名字的系统调用是A.getcwdB.getpwuid B.getpwuidC.getgrgid C.getgrgidD.getlogin D.getlogin 4.可以使用(.可以使用( )系统调用获得符号链接所引用文件名称)系统调用获得符号链接所引用文件名称A.link A.linkB.symlinkC.readlink C.readlinkD.softlink D.softlink5.获取某个环境变量值使用函数.获取某个环境变量值使用函数A .getenvB .putenvC .setenvD .unsetenv6.下面那个不是lseek 第三个参数的取值第三个参数的取值A.SEEK_SET A.SEEK_SETB.SEEK_CUR B.SEEK_CURC.SEEK_NOW C.SEEK_NOWD.SEEK_END7.Linux 文件系统的根目录的i 节点号为节点号为A. 0B. 1C.2D.38.根据文件路径来改变文件权限使用系统调用是.根据文件路径来改变文件权限使用系统调用是A.chownB.chmodC.fchmod C.fchmodD.fchown9.可以使用(.可以使用( )系统调用获得符号链接所引用文件名称)系统调用获得符号链接所引用文件名称A.link A.linkB.symlinkC.readlink C.readlinkD.softlink D.softlink1010.文件描述符的数据类型是.文件描述符的数据类型是.文件描述符的数据类型是A. charB.intC.doubleD.float二、填空题二、填空题 1.Vi 的三种工作模式:的三种工作模式:、 、 。
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的I/O文件,stream这个类有两个重要的运算符:1、插入器(<<)向流输出数据。
比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'n';就表示把字符串"Write Stdout"和换行字符('n')输出到标准输出流。
2、析取器(>>)从流中输入数据。
比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。
下面就把此类的文件操作过程一一道来。
一、打开文件在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:void open(const char* filename,int mode,int access);参数:filename:要打开的文件名mode:要打开文件的方式access:打开文件的属性打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:ios::app:以追加的方式打开文件ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性ios::binary:以二进制方式打开文件,缺省的方式是文本方式。
两种方式的区别见前文ios::in:文件以输入方式打开ios::out:文件以输出方式打开ios::nocreate:不建立文件,所以文件不存在时打开失败ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败ios::trunc:如果文件存在,把文件长度设为0可以用“或”把以上属性连接起来,如ios::out|ios::binary// 注:现在C++标准库不支持nocreate和noreplace,以前的旧版本可以用.打开文件的属性取值是:0:普通文件,打开访问1:只读文件2:隐含文件4:系统文件可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性文件。
DATASHEETModbus Master/SlaveCommunication ModuleMVI56E-MCM/MCMXTThe MVI56E Communication Module allows for Modbus Master and/or Slaveconnectivity from Rockwell Automation® ControlLogix® processors to ModbusRTU/ASCII devices. Each MVI56E port can be configured as a Master or Slave.The MVI56E-MCM and MVI56E-MCMXT act as input/output modules on theControlLogix backplane, making Modbus data appear as I/O data to the processor.Two independently configurable serial ports can operate on the same or differentModbus networks. The MVI56E-MCM is designed for standard processapplications and the MVI56E-MCMXT is designed for the Logix-XT™ controlplatform, allowing it to operate in extreme environments. It can tolerate higheroperating temperatures, and has conformal coating to protect it from harsh orcaustic conditions.Features BenefitsBackward Compatibility ♦All MVI56E products are backward-compatible with earlier MVI56 modules allowing directreplacement without the need to change existing controller programs10,000 Word Database ♦Allows you to gather more data from your devices, which improves operationalperformance♦Enjoy Enhanced features and flexibility without incurring expensive reprogramming costs Add-On Instruction ♦Module configuration stored within the RSLogix™ 5000 project (ACD file)♦No additional programming or configuration software is required♦Add-On Instruction for RSLogix 5000 version 16 or higher cuts development time andcostsCIPconnect® Enabled ♦Facilitates remote user access across the ControlLogix backplane through RockwellAutomation’s 1756-ENBT module♦Configure, diagnose, and analyze process data and communications status♦Bridge through multiple ENBT/CNBT links to connect to MVI56E-MCMs installed in remotechassis for configuration and diagnosticsAdd-On Profile ♦Simplifies adding the module in an RSLogix 5000 projectConfigurationThe module configuration is defined in the Add on Instruction. The AOI is fullycommented, and includes user-defined data types, ladder rungs and controller tags. TheAOI can be used without modification for most application.The MVI56E-MCM User Manual and sample configuration provide a quick and easyexample with step-by-step instructions on how to move data through the module fromthe Modbus network to the processor.General Specifications∙Backward-compatible with previous MVI56-MCM version∙Single Slot - 1756 ControlLogix® backplane compatible∙10/100 MB Ethernet port for network configuration and diagnostics with Auto Cable Crossover Detection∙User-definable module data memory mapping of up to 10,000 16-bit registers∙4-character, scrolling, alphanumeric LED display of status and diagnostic data in plain English∙ProSoft Discovery Service (PDS) software finds the module on the network and assigns a temporary IP address to facilitate module accessFunctional SpecificationsThe MVI56E-MCM will operate on a Local or Remote rack (For remote rack applications with smaller data packet size please refer to the MVI56E-MCMR product)∙Supports Enron version of Modbus protocol for floating-point data transactions∙PCB includes powerful Modbus network analyzer∙Special functions (command control, event commands, status, and so on) are supported by message transfer (unscheduled) using the MSG instruction∙Error codes, network error counters, and port status data available in user data memorySlave SpecificationsThe MVI56E-MCM module accepts Modbus function code commands of 1, 2, 3, 4, 5, 6, 8, 15, 16, 17, 22, and 23 from an attached Modbus Master unit. A port configured as a Modbus Slave permits a remote Master to interact with all data contained in the module. This data can be derived from other Modbus Slave devices on the network, through a Master port, or from the ControlLogix processor.Master SpecificationsA port configured as a virtual Modbus Master device on the MVI56E-MCM module actively issues Modbus commands to other nodes on the Modbus network. Up to 325 commands are supported on each port. Additionally, the Master ports have an optimized polling characteristic that polls Slaves with communication problems less frequently. The ControlLogix processor ladder logic can issues commands directly from ladder logic or actively select commands from the command list to execute under ladder logic control.ControlLogix™ Modbus IntegrationGeneral Modbus SpecificationsCommunication Parameters Baud Rate: 110 baud to 115.2 kbpsStop Bits: 1 or 2Data Size: 7 or 8 bitsParity: None, Even, OddRTS Timing delays: 0 to 65535 milliseconds Modbus Modes RTU mode (binary) with CRC-16ASCII mode with LRC error checkingFloating Point Data Floating point data movement supported, includingconfigurable support for Enron and DanielimplementationsModbus Function Codes 1: Read Coils Status2: Read Input Status3: Read Holding Registers4: Read Input Registers5: Force (Write) Single Coil6: Preset (Write) Single Register8: Diagnostics15: Force (Write) Multiple Coils16: Preset (Write) Multiple Data Registers17: Report Slave ID22: Mask Write 4x Register23: Read/Write 4x RegistersModbus Master SpecificationsCommand List Up to 325 commands per Master port, each fullyconfigurable for function code, slave address, registerto/from addressing and word/bit count.Optimized Polling Configuration options allow Master ports andcommands to be optimized to poll slaves withcommunication problems less frequently.Command Status/Error Monitoring Command Status or Error codes are generated for each command as it executes, allowing careful monitoring of communication health between the Master and its Slaves.Slave Polling Control Master Port maintains a Slave Status list of all networkSlaves. Polling of each Slave may be disabled andenabled using this list.Modbus Slave SpecificationsFull Memory Access A port configured as a Modbus Slave permits a remoteMaster to read from or write to any of the 10,000registers that make up the user memory database. Multi-source Slave Data Data presented at the Slave port can be derived fromother Modbus Slave devices on a different networkthroug h the module’s Master port or from the processortag database.Node Address 1 to 247 (software selectable)Status Data Slave port error codes, counters and statuses areavailable separately for each port when configured as aSlave® products areHardware SpecificationsGeneralSpecification DescriptionBackplane Current Load 800 mA @ 5 Vdc3 mA @ 24 VdcOperating Temperature 0°C to 60°C (32°F to 140°F) - MVI56E-MCM-25°C to 70°C (-13°F to 158°F) - MVI56E-MCMXT Storage Temperature -40°C to 85°C (-40°F to 185°F)Extreme/Harsh Environment MVI56E-MCMXT comes with conformal coating Shock 30 g operational50 g non-operationalVibration: 5 g from 10 to 150 HzRelative Humidity 5% to 95% (without condensation)LED Indicators Battery Status (ERR)Application Status (APP)Module Status (OK)4-Character, Scrolling, Alpha-Numeric LED Display Shows Module, Version, IP, Port Master/Slave Setting, Port Status, and Error InformationDebug/Configuration Ethernet port (E1 - Config)Ethernet Port 10/100 Base-T, RJ45 Connector, for CAT5 cableLink and Activity LED indicatorsAuto-crossover cable detectionSerial Application ports (P1 & P2)Full hardware handshaking control, providing radio, modem, and multi-drop supportSoftware configurable communication parameters Baud rate: 110 baud to 115.2 kbpsRS-232, 485 and 422Parity: none, odd or evenData bits: 5, 6, 7, or 8Stop bits: 1 or 2RTS on/off delay: 0 to 65535 millisecondsSerial Applications Ports (P1, P2) RJ45 (DB-9M with supplied adapter cable) Configurable RS-232 hardware handshaking500V Optical isolation from backplaneRS-232, RS-422, RS-485 jumper-select, each port RX (Receive) and TX (Transmit) LEDs, each portShipped with Unit RJ45 to DB-9M cables for each serial port5 foot Ethernet Straight-Thru Cable (Gray) Agency Approvals and CertificationsAgencyRoHSATEXCSACECSA CB SafetycULusGOST-RLloyds® offers a full。
Xerox® WorkCentre® 7220/7225Software Installation InstructionsUpgrading Software for Xerox® ConnectKey® TechnologyA new firmware update containing the latest improvements is available for your ConnectKey-enabled multifunctional printer. The upgrade process can be performed on Xerox® devices built on ConnectKey Technology currently running software versions starting with 071, 072 or 073.Identify the Device Software Version1.At the computer, open an Internet browser window.2.Enter the IP Address of the device in the Address field in the formathttp://xx.xxx.xxx.xx and then press Enter on the keyboard. TheCentreWare Internet Services home page is displayed.3.Select the Status tab, and then select Configuration Report.4.Scroll to the Common User Data section and record the SystemSoftware Version shown.Print a Configuration ReportIt is important to print and keep a Configuration Report for reference until after the software update has been completed.1.At the device, press the Machine Status button.2.Touch the Information Pages button.3.Touch Configuration Report and then touch Print.Upgrade ProceduresUpgrade Tool (Recommended) To upgrade your device, we recommend you use the Xerox® ConnectKey® Technology Software Upgrade Utility. This utility enables you to upgrade your device automatically by running through our quick and easy-to-use tool interface. To use the recommended automatic upgrade process, follow the instructions provided on page 2.Manual Upgrade If you experience problems with the automatic upgrade procedure, a manual upgrade process can be used. The instructions vary depending on your current software level, identify the correct procedure to follow for your deviceusing the table below:Software Version Procedure071.xxx.xxx.xxxxx Complete Part 1 and Part 2 instructions (see page 4)072.xxx.xxx.xxxxx Complete Part 2 instructions (see page 5)073.xxx.xxx.xxxxx Complete Part 3 instructions (see page 7)Note: The software version you are installing must always be higher than the software version currently installed on your device for a successful upgrade to occur.Xerox® ConnectKey® Technology Software Upgrade UtilityAutomatic Upgrade to a later version of Software for Xerox® ConnectKey® TechnologyThis utility automatically updates devices running software versions 071.xxx.xxx.xxxxx, 072.xxx.xxx.xxxxx or 073.xxx.xxx.xxxxx to a later version of software for Xerox® ConnectKey® Technology, including all required patches.The utility automatically validates that it is connected to the correct type of device and that the user has valid administrative credentials before the upgrade process begins. The total upgrade process can take from 1 to 2.5 hours depending on the current software version of the device. It is a multi-step process and the device will be inoperable during this time. Ensure the device is free from faults and paper jams before starting the upgrade process.Requirements•Check the software version installed on your device (see instructions on page 1). If the software version number does not start with 071, 072, or 073, verify the type of device you have and check for the correct upgrade instructions on /support. • A computer with Java 6 or later installed and with network access to the WorkCentre® device.•This utility must be downloaded and saved on your computer hard drive and opened from there. Do not run the utility from a USB drive or remote server.•The WorkCentre® must have the HTTP option enabled. Refer to the System Administrator Guide for instructions.Procedure1.At the device, print a copy of the Configuration Report (see page 1 for instructions) and make sure A4 or Letter paper is loaded in atleast one tray.2.Download the ConnectKeySoftwareUpgradeTool.zip file. Unzipthe file to your hard drive.3.Download the WorkCentre7220-25 Software Upgrade DLMsfile and store in a folder. Unzip the file.There is another zip file inside of the first zip file. Do NOT unzipthis file. This zip file will be used at step 9.4.Open the folder with the CKUpgrade##.jar and double-click theJar file (PC/Mac) or type java –jar <jar file name> (Linux).5.The initial entry screen is displayed. Click Add Devices.6.Enter the IP address or hostname of the device.7.Enter the Username and Password of the device.-If the device does not use the Admin password, then select theOpen Access checkbox.Use the Add Devices button to add additional devices of thesame family or of different product families. You must downloadthe software upgrade zip files for each product family and storein the same folder from step 3.8.Click Next.9.In the “Choose Upgrade Folder” window, click the Select buttonand browse to the folder where you stored the Software UpgradeDLM zip file(s), which was unzipped in step 3, then select Open.10.Click Verify. If any errors are posted, use the message to resolvethe error.-On the Additional Install Options screen, you can choose notin install the Additional Apps by clicking the button toremove the checkmark.-You can choose not to save the Admin password in theupdate report.-You can limit the number of machines to 5 send software tosimultaneously.11.Click Continue to list the devices that will be upgraded.12.Click Upgrade to begin the process of sending the upgrade filesto the machines that have been verified.When the software upgrade is complete, the device automatically reboots and prints a Software Upgrade Report and a new Configuration Report.Congratulations! You have successfully upgraded your software for Xerox® ConnectKey® Technology.1.At the device, print a copy of the Configuration Report (see page 1 for instructions) and make sure A4 or Letter paper is loaded in atleast one tray.2.At the computer, install Pre-upgrade Patch 729999v3.dlm on your device:a.Download the WorkCentre_7220-25 Software Upgrade DLMs file. Unzip the file to your desktop, a folder calledWorkCentre7220-25-system-swXXXX is created.b.Open an Internet browser window. Enter the IP Address of the device in the Address field in the format http://xx.xxx.xxx.xxand then press Enter on the keyboard.c.Select General Setup and then select Machine Software.d.Select Upgrades. If Upgrades is disabled, select the Enabled box and select Apply. The pop-up message Properties have beensuccessfully modified is displayed, select OK.e.Select Manual Upgrade.f.Select Browse and locate the WorkCentre_7220-25-system-swXXXX folder, then select Open.g.Select the 729999v3.dlm file then select Open.h.Select the Install Software button. The pop-up message File has been submitted is displayed. Select OK.If you get a printed sheet with the message This patch is not intended for this software version and was not installed,ensure the device has software version 071.xxx.xxx.xxxxx installed.The patch is successfully installed when the Network Controller version shows 729999v3 appended.3.At the computer, install Software Version 072.xxx.xxx.xxxxx on your device:a.Before installing the next file select Logout in the upper right area of the page, and then select the Logout button.b.Select General Setup and then select Machine Software.c.Select Upgrades. If Upgrades is disabled, select the Enabled box and select Apply. The pop-up message Properties have beensuccessfully modified is displayed, select OK.d.Select Manual Upgrade.e.Select Browse and locate the WorkCentre_7220-25-system-swXXXX folder, then select Open.f.Select the WorkCentre_7220-25-system-sw#072xxxxxxxxxxx#.DLM file, and then select Open.g.Select the Install Software button. The pop-up message File has been submitted is displayed. Select OK.Do not navigate from the Internet browser during the file transferring process.Software Installation will begin several minutes after the software file has been submitted to the device. Once Installation has begun all CentreWare Internet Services from the device will be lost, including the Web User Interface. The installation progress can be monitored from the device user interface. The software install process may take up to 60 minutes.When the software upgrade is complete, the device automatically reboots and prints a Software Upgrade Report and a new Configuration Report.Now proceed to Part 2 to upgrade the device to Software Version 073.xxx.xxx.xxxxx.1.At the device, print a copy of the Configuration Report (see page 1 for instructions) and make sure A4 or Letter paper is loaded in atleast one tray.2.At the computer, install Pre-upgrade Patch 788101v X.dlm on your device:a.Download the WorkCentre_7220-25 Software Upgrade DLMs file. Unzip the file to your desktop, a folder calledWorkCentre_7220-25-system-swXXXX is created. (Skip this step if continuing from Part 1.)b.Open an Internet browser window. Enter the IP Address of the device in the Address field in the format http://xx.xxx.xxx.xxand then press Enter on the keyboard.c.Select General Setup and then select Software Upgrade.–If Security Installation Policy: Not Allowed (Device and Remote Methods) is shown, the Software Upgrades option is disabled. Select the Allow Upgrade button. The pop-up message Properties have been successfully modified isdisplayed, select OK.–Select the Security Installation Policy: link and enable all the options. This ensures all the software upgrade functions are accessible. Select Apply. The pop-up message Properties have been successfully modified is displayed, select OK.–Select Software Upgrade from the menu to return to the Software Upgrade page.d.Select Manual Upgrade.e.Select Browse and locate the WorkCentre_7220-25-system-swXXXX folder, then select Open.f.Select the 788101vX.dlm file then select Open.g.Select the Install Software button. The pop-up message File has been submitted is displayed. Select OK.If you get a printed sheet with the message This patch is not intended for this software version and was not installed,ensure the device has software version 072.xxx.xxx.xxxxx installed.The patch is successfully installed when the Network Controller version shows 788101v X appended.3.At the computer, install Software Version 073.xxx.xxx.xxxxx on your device:a.Before installing the next file select Logout in the upper right area of the page, and then select the Logout button.b.Select General Setup and then select Software Upgrade.–If Security Installation Policy: Not Allowed (Device and Remote Methods) is shown, the Software Upgrades option is disabled. Select the Allow Upgrade button. The pop-up message Properties have been successfully modified isdisplayed, select OK.–Select the Security Installation Policy: link and enable all the options. This ensures all the software upgrade functions are accessible. Select Apply. The pop-up message Properties have been successfully modified is displayed, select OK.–Select Software Upgrade from the menu to return to the Software Upgrade page.c.Select Manual Upgrade.d.Select Browse and locate the WorkCentre_7220-25-system-swXXXX folder, then select Open.e.Select the WorkCentre_7220-25-system-sw#073xxxxxxxxxxx#.DLM file, and then select Open.f.Select the Install Software button. The pop-up message File has been submitted is displayed. Select OK.Do not navigate from the Internet browser during the file transferring process.Software Installation will begin several minutes after the software file has been submitted to the device Once Installation has begun all CentreWare Internet Services from the device will be lost, including the Web User Interface. The installation progress can be monitored from the device user interface. The software install process may take up to 60 minutes.When the software upgrade is complete, the device automatically reboots and prints a Software Upgrade Report and a new Configuration Report.Congratulations! You have successfully upgraded your software for Xerox® ConnectKey® Technology.Part 3Upgrade from 073.xxx.xxx.xxxxx to a later version of Software for Xerox® ConnectKey® Technology1.At the device, print a copy of the Configuration Report (see page 1 for instructions) and make sure A4 or Letter paper is loaded in atleast one tray.2.At the computer, perform the Software Installation for your device:a.Download the WorkCentre_7220-25 Software Upgrade DLMs file. Unzip the file to your desktop, a folder calledWorkCentre_7220-25-system-swXXXX is created.b.Check the software version is later than the software version currently installed on your device:–Open the WorkCentre_7220-25-system-swXXXX folder.–Compare the last 6 digits of the software DLM file with the software version shown on the Configuration Report printed on your device.The software DLM file number must be higher than the software version installed on your device for a successful upgradeto occur.c.Open an Internet browser window. Enter the IP Address of the device in the Address field in the format http://xx.xxx.xxx.xxand then press Enter on the keyboard.d.Select General Setup and then select Software Upgrade.–If Security Installation Policy: Not Allowed (Device and Remote Methods) is shown, the Software Upgrades option is disabled. Select the Allow Upgrade button. The pop-up message Properties have been successfully modified isdisplayed, select OK.–Select the Security Installation Policy: link and enable all the options. This ensures all the software upgrade functions are accessible. Select Apply. The pop-up message Properties have been successfully modified is displayed, select OK.–Select Software Upgrade from the menu to return to the Software Upgrade page.e.Select Manual Upgrade.f.Select Browse and locate the WorkCentre_7220-25-system-swXXXX folder, then select Open.g.Select the WorkCentre_7220-25-systemsw#075xxxxxxxxxxx#.DLM file, and then select Open.h.Select the Install Software button. The pop-up message File has been submitted is displayed. Select OK.Do not navigate from the Internet browser during the file transferring process.Software Installation will begin several minutes after the software file has been submitted to the device Once Installation has begun all CentreWare Internet Services from the device will be lost, including the Web User Interface. The installation progress can be monitored from the device user interface. The software install process may take up to 60 minutes.When the software upgrade is complete, the device automatically reboots and prints a Software Upgrade Report and a new Configuration Report.Congratulations! You have successfully upgraded your software for Xerox® ConnectKey® Technology.。
1.6 习题1.填空题(1) 项目工作区一般在集成开发环境的左侧。
它展示一个项目的几个方面, 它们分别是ClassView、ResourceView和FileView。
(2) 编译程序的快捷键是Ctrl+F7, 链接程序的快捷键是F7, 运营程序的快捷键是Ctrl+F5。
(3) 项目工作区文献的扩展名为.dsw 。
(4) 应用程序向导AppWizard的作用是帮助用户一步步生成一个新的应用程序, 并且自动生成应用程序所需的基本代码。
通过ClassWizard 可以增长消息映射和成员变量。
(5) 菜单选择可以通过两种方法来进行: 一种是鼠标操作;另一种是键盘操作。
(6) 编译微型条工具栏最右边按钮的功能是Insert/Remove Breakpoint 。
(7) 快捷键或菜单及相关资源的资源符号的前缀是IDR_。
(8) 用户可以通过项目工作区窗口的ResourceView视图来查看资源。
2.选择题(1) 项目文献的扩展名是( )。
A..ex. .B..ds. ..C..ds......D..cpp(2) 设立断点的默认方式是( )。
(第2章)A.Locatio.B.Dat...C.Messag...D.Breakpoints(3) 用应用程序向导AppWizard创建C++源文献, 应选择( )选项卡。
A.Files...B.Project.C.Workspaces.D.Othe.Document.(4)Standard工具栏中最左边按钮与( )菜单命令的功能同样。
A.NewB.Ne.File.C.Ne.Tex.File.D.Ne.Workspace(5) Windows资源提供的资源编辑器不能编辑( )。
A.菜. ..B.工具.C.状态. ..D.位图3.判断题(1) 打开一个项目, 只需打开相应的项目工作区文献。
( T )(2) 用户可以通过Tools | Customize菜单命令设立集成开发环境的工具栏。
解决引导内核遇到undefinedinstruction的错误其实在上⼀篇随笔之前,就是在启动linux 内核的时候,出了点问题刚Starting kernel ...就出现了undefined instrction,这是什么问题呢?在⽹上也搜了不少资料,有两篇很有启发就是这两篇。
我们先来了解下mkimage这个命令,重要关注loadaddress和entry address./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image-A ==> set architecture to 'arch'-O ==> set operating system to 'os'-T ==> set image type to 'type'-C ==> set compression type 'comp'-a ==> set load address to 'addr' (hex)-e ==> set entry point to 'ep' (hex)-n ==> set image name to 'name'-d ==> use image data from 'datafile'-x ==> set XIP (execute in place)mkimage是将zImage之前加上64字节的镜像头所以如果使⽤mkimage⽣成内核镜像⽂件的话,会在内核的前头加上了64byte的信息,供建⽴tag之⽤。
bootm命令会⾸先判断bootm xxxx 这个指定的地址xxxx是否与-a指定的加载地址是否相同。
智能设备应用开发知到章节测试答案智慧树2023年最新四川邮电职业技术学院模块一测试1.新建一个Android Studio项目的过程中,Minimum SDK表示支持Android的()。
参考答案:最低版本2.Android Studio的项目结构中,layout目录用于()。
参考答案:存放布局文件3.下列选项中,属于Android中图片资源格式的是()。
参考答案:jpg;gif;png4.关于字符串资源的描述,正确的是()参考答案:可以在java代码中调用字符串资源;可以在布局文件中调用字符串资源5.通常情况下,应用图标资源存放在是src文件夹中()参考答案:错6.程序中的app文件夹用于存放程序的代码和资源等内容.()参考答案:对模块二测试1.下列选项中,属于设置ImageView控件显示图片资源的属性是()参考答案:android:src2.下列选项中,用于EditText控件中内容为空时显示提示文本信息的属性为()参考答案:android:hint3.Android提供的多选按钮是()。
参考答案:CheckBox4.ChencButton下面关于CheckBox控件的描述,正确的是()。
参考答案:他可以实现多选功能;可以通过android:checked属性指定是否选中的状态;CheckBox表示复选框5.android中,sp代表可伸缩像素,推荐设置文字大小时使用.( )参考答案:对6.Android 代码中加入Toast.makeText(Context,Text,Time);即可显示Toast()参考答案:错7.android:textSize属性可以设置TextView中的文本显示的大小()参考答案:对模块三测试1.在Activity的onCreate()方法中,加载布局资源文件的方法是()参考答案:setContentView()2.Android程序入口的Activity是在()文件中注册的。
企业服务器配置与管理-社招2021级学习通超星课后章节答案期末考试题库2023年1.()命令能用来查找在文件TESTFILE中包含4个字符的行。
答案:grep '^$' TESTFILE2.()命令用来显示/home及其子目录下的文件名。
答案:ls -R /home3.Linux一般有3个主要部分:(文字填写)、命令解释器和实用工具。
答案:内核4.文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统和文件。
答案:保存###管理5.如果忘记了ls命令的用法,可以采用()命令获得帮助。
答案:man ls6.目前被称为纯种的UNIX指的就是以及这两套操作系统。
答案:SystemV###BSD7.Linux是基于(纯文字填写)的软件模式进行发布的,它是GNU项目制定的通用公共许可证,英文是GPL(General Public License)。
答案:无版权8.史托曼成立了自由软件基金会,它的英文是。
答案:FSF,FreeSoftwareFoundation;FSF9.在/etc/group中有一行student::600:z3,14,w5,表示有多少用户在student组中?()答案:410.ext文件系统在1992年4月完成,称为,是第一个专门针对Linux操作系统的文件系统。
Linux系统使用、和文件系统等。
答案:扩展文件系统###ext2###ext3###xfs11.ext文件系统结构的核心组成部分是、和。
答案:超级块;级块###inode块;索引节点数###block块;数据表12.Linux操作系统是的操作系统,它允许多个用户同时登陆系统,使用系统资源。
答案:多用户多任务13.查看系统当中所有进程的命令是()。
答案:ps aux14.Linux系统下的用户账户分为两种和。
答案:普通用户账户###超级用户账户15.POSIX是(文字填写)的缩写,重点在规范核心与应用程序之间的接口,这是由美国电气与电子工程师学会(IEEE)所发布的一项标准。
C++ primer plus 中文版第六版源代码第二章到第四章,后续继续更新………第二章1:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<”I have ”;cout<〈carrots;cout<<”carrots。
";cout<<endl;carrots=carrots—1;cout<〈”Crunch,crunch.Now I have "〈<carrots〈<” carrots"<<endl;}2:#include〈iostream〉int stonetolb(int);int main(){using namespace std;int stone;cout〈<"Enter the weight in stone: ";cin〉〉stone;int pounds=stonetolb(stone);cout<<stone〈<” stone= ”;cout〈<pounds〈<" pounds。
”〈<endl;return 0;}int stonetolb(int sts){return 14*sts;}3:#include<iostream〉void main(){using namespace std;int carrots;carrots=25;cout<〈"How many carrots do you have?"<<endl;cin>〉carrots;cout<〈”Here are two more。
”;carrots=carrots+2;cout<<”Now you have "<〈carrots<〈" carrots.”<<endl; //下两行专门测试cin。
C/C++头文件一览C、传统C++#include <assert.h>//设定插入点使用断言assert()宏是用于保证满足某个特定条件,用法是:assert(表达式);如果表达式的值为假,整个程序将退出,并输出一条错误信息。
如果表达式的值为真则继续执行后面的语句。
使用这个宏前需要包含头文件assert.h例如#include <stdio.h>#include <assert.h>void main(){float a,b;scan("%f %f",&a,&b);assert(b!=0);printf("%f\n",a/b);}以上的程序要计算A/B的值,因此要求b!=0,所以在程序中使用了assert()用于确保b!=0,如果b==0,则程序会退出。
#include <ctype.h>//字符处理isalnum 判断一个字符是否是字符类的数字或者字母isalpha 判断一个字符是否是字母isblank 判断一个字符是空白字符(空格和水平制表符Tab)iscntrl 判断一个控制符(ascii码0-31之间的字符)isdigit 判断一个字符是否是字符类的数字isgraph 判断一个字符是否是可打印字符(ascii码33-126之间的字符)islower 判断一个字符是否是小写字母isprint 判断一个字符是否是包含空格在内的可打印字符(ascii码32-126之间的字符)ispunct 判断一个字符是否是除空格,字母,数字外的标点符号isspace 判断一个字符是空白字符(空格,换行符(\n),走纸符(\f),回车符(\r),垂直制表符(\v),水平制表符(\t))isupper 判断一个字符是否是大写字母isxdigit 判断一个字符是否是一个十六进制的数字tolower 将大些字符转换为小写toupper 将小写字符转换为大写isalnum()函数的作用是判断一个字符是否是字符类的数字或者字母:#include <ctype.h>int main(void){if(isalnum('a'))printf("It's True"); // 显示It's Trueif(isalnum(4))printf("It's True"); // 显示''if(isalnum('4'))printf("It's True"); // 显示It's Truereturn 0;}isalpha()函数的作用是判断一个字符是否是字母:#include <stdio.h>#include <ctype.h>int main(void){if(isalpha('a'))printf("It's True"); // 显示It's Trueif(isalpha(4))printf("It's True"); // 显示''if(isalpha('4'))printf("It's True"); // 显示''return 0;}isblank()函数的作用是判断一个字符是空白字符(空格和水平制表符Tab),isspace()函数和isblank()函数类似,但是还包含空格,换行符(\n),走纸符(\f),回车符(\r),垂直制表符(\v),水平制表符(\t):#include <stdio.h>#include <ctype.h>int main(void){if(isblank(' ')) // 空格printf("It's True"); // 显示It's Trueif(isblank('\t')) // Tabprintf("It's True"); // 显示It's Trueif(isblank('\n')) // 换行printf("It's True"); // 显示''if(isblank('\r')) // 回车printf("It's True"); // 显示''if(isspace(' ')) // 空格printf("It's True"); // 显示It's Trueif(isspace('\t')) // Tabprintf("It's True"); // 显示It's Trueif(isspace('\n')) // 换行printf("It's True"); // 显示It's Trueif(isspace('\r')) // 回车return 0;}iscntrl()函数的作用是判断一个控制符(ascii码0-31之间的字符):#include <stdio.h>#include <ctype.h>int main(void){if(isblank(' ')) // 空格printf("It's True"); // 显示''if(isblank('\t')) // Tabprintf("It's True"); // 显示It's Trueif(isblank('\n')) // 换行printf("It's True"); // 显示It's Trueif(isblank('\r')) // 回车printf("It's True"); // 显示It's Truereturn 0;}isdigit()函数的作用是判断一个字符是否是字符类的数字:#include <stdio.h>#include <ctype.h>int main(void){if(isdigit('4'))printf("It's True"); // 显示It's Trueif(isdigit(4))printf("It's True"); // 显示''if(isdigit('a'))printf("It's True"); // 显示''return 0;}isgraph()函数的作用是判断一个字符是否是可打印字符(ascii码33-126之间的字符),isprint()函数功能和isgraph()函数类似,区别是isprint()函数包含空格在内(ascii码32-126之间的字符):#include <stdio.h>#include <ctype.h>int main(void){if(isgraph('a'))printf("It's True"); // 显示It's Trueif(isgraph('.'))printf("It's True"); // 显示It's Trueif(isgraph(' ')) // 空格printf("It's True"); // 显示''if(isprint('a'))printf("It's True"); // 显示It's Trueif(isprint('.'))if(isprint(' ')) // 空格printf("It's True"); // 显示It's Truereturn 0;}islower()函数的作用是判断一个字符是否是小写字母,isupper()函数的作用是判断一个字符是否是大写字母:#include <stdio.h>#include <ctype.h>int main(void){if(islower('a'))printf("It's True"); // 显示It's Trueif(islower('A'))printf("It's True"); // 显示''if(isupper('a'))printf("It's True"); // 显示''if(isupper('A'))printf("It's True"); // 显示It's Truereturn 0;}ispunct()函数的作用是判断一个字符是否是除空格,字母,数字外的标点符号:#include <stdio.h>#include <ctype.h>int main(void){if(ispunct('a'))printf("It's True"); // 显示''if(ispunct('.'))printf("It's True"); // 显示It's Trueif(ispunct('<'))printf("It's True"); // 显示It's Truereturn 0;}isxdigit()函数的作用是判断一个字符是否是一个十六进制的数字:#include <stdio.h>#include <ctype.h>int main(void){if(isxdigit('4'))printf("It's True"); // 显示It's Trueif(isxdigit('xE'))printf("It's True"); // 显示It's Trueif(isxdigit('xF'))printf("It's True"); // 显示''return 0;}#include <stdio.h>#include <ctype.h>int main(void){char n,m,i,j;n = tolower('A');m = tolower('a');i = toupper('a');j = toupper('.');printf("%c %c %c %c", n, m, i, j); // 显示a a A .return 0;#include <errno.h>//定义错误码#include <float.h>//浮点数处理#include <fstream.h>//文件输入/输出#include <iomanip.h>//参数化输入/输出#include <iostream.h>//数据流输入/输出#include <limits.h>//定义各种数据类型最值常量#include <locale.h>//定义本地化函数#include <math.h>//定义数学函数#include <stdio.h>//定义输入/输出函数<stdio.h>下面的类型,宏,函数都是分类的其他:size_t sizeof返回的值NULL 空指针文件:FILE 文件的类型fpos_t 文件中指针的位置EOF 文件末尾<0FILENAME_MAX 文件名最大值>0FOPEN_MAX 同时打开文件的最大值>8SEEK_SET 文件头SEEK_CUR 文件当前位置SEEK_END 文件末尾打开文件FILE *fopen(const char *filename,const char *mode);更改当前流相关的文件FILE *freopen(const char *filename,const char *mode,FILE *stream);关闭文件int fclose(FILE *stream);清除流中的错误标志或文件末尾标志void clearerr(FILE *stream);测试流上的文件末尾标志int feof(FILE *stream);测试流上的错误标志int ferror(FILE *stream);int ungetc(int c, FILE *stream);从流中读一个字符int fgetc(FILE *stream);int getc(FILE *stream);/* 与fgetc相同但是可以用宏实现该函数*/ 写一个字符到一个流int fputc(int c, FILE *stream);int putc(int c, FILE *stream);从流中获取一个字符串char *fgets(char *s, int n, FILE *stream);写一个字符串到一个流int fputs(const char *s, FILE *stream);打印一个格式化数据到一个流int fprintf(FILE *stream,const char *format, ...);使用一个参量列表指针格式化到流的数据int vfprintf(FILE *stream,const char *format, va_list ap);从一个流中读取格式化数据int fscanf(FILE *stream, const char *format, ...);从一个流中读数据size_t fread(char *buffer,size_t size,size_t count,FILE *stream);写数据到一个流int fwrite(const char *buffer, size_t size, size_t count,FILE *stream);获取流的文件位置指示符int fgetpos(FILE *stream, fpos_t *pos);设置流位置指示符int fsetpos(FILE *stream, const fpos_t *pos);移动文件指针到一个指定的位置int fseek(FILE *stream, long offset, int origin);获得文件指针相对于文件头的偏移量long ftell(FILE *stream);重新定位一个文件指针到文件开头void rewind(FILE *steam);删除一个文件int remove(const char *path);更改一个文件或目录int rename(const char *oldname, const char *newname);缓冲区:_IOFBF_IOLBF_IONBF 缓冲区类型BUFSIZE 缓冲区尺寸>=256刷新一个流并清空与流相关的缓冲区的内容int fflush(FILE *stream);控制流的缓冲区,已经被setvbuf代替void setbuf(FILE *stream, char *buffer);int setvbuf(FILE *stream, char *buffer, int mode, size_t size);将一个格式化数据写入一个字符串int sprintf(char *buffer, const char *format, ...);从字符串中读格式化数据int sscanf(const char *buffer, const char *format, ...);从参量列表指针格式化到字符串int vsprintf(char *buffer, const char *format, va_list ap);临时文件L_tmpnam 临时文件名长度>0TMP_MAX 产生唯一文件名的最大数目>=25以二进制读写的方式建立一个临时文件FILE *tmpfile(void);建立一个临时文件名char *tmpname(char *string);标准流:stdin 标准输入流stdout 标准输出流stderr 标准错误输出流从stdin获得一个字符int getchar(void);把字符写道stdoutint putchar(int c);从stdin中获取一行char *gets(char *buffer);写一个字符串到stdoutint puts(const char *string);打印一个错误消息到stderrvoid perror(const char *error);打印格式化数据到stdoutint printf(const char *format, ...);从stdin读格式化数据int scanf(const char *format, ...);从参量列表指针格式化到stdoutint vprintf(const char *format, va_list ap);#include <stdlib.h>//定义杂项函数及内存分配函数#include <string.h>//字符串处理#include <strstrea.h>//基于数组的输入/输出#include <time.h>//定义关于时间的函数#include <wchar.h>//宽字符处理及输入/输出#include <wctype.h>//宽字符分类标准C++(同上的不再注释)#include <algorithm>//STL 通用算法#include <bitset>//STL 位集容器#include <cerrno>#include <clocale>#include <cmath>#include <complex>//复数类#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <deque>//STL 双端队列容器#include <exception>//异常处理类#include <fstream>#include <functional>//STL 定义运算函数(代替运算符)#include <limits>#include <list>//STL 线性列表容器#include <map>//STL 映射容器#include <iomanip>#include <ios>//基本输入/输出支持#include <iosfwd>//输入/输出系统使用的前置声明#include <iostream>#include <istream>//基本输入流#include <ostream>//基本输出流#include <queue>//STL 队列容器#include <set>//STL 集合容器#include <sstream>//基于字符串的流#include <stack>//STL 堆栈容器#include <stdexcept>//标准异常类#include <streambuf>//底层输入/输出支持#include <string>//字符串类#include <utility>//STL 通用模板类#include <vector>//STL 动态数组容器#include <cwchar>#include <cwctype>using namespace std;////////////////////////////////////////////////////////////////////////// C99 增加#include <complex.h>//复数处理#include <fenv.h>//浮点环境#include <inttypes.h>//整数格式转换#include <stdbool.h>//布尔环境#include <stdint.h>//整型环境#include <tgmath.h>//通用类型数学宏分类函数,所在函数库为ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)返回非0值,否则返回0int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'),走纸换行('\f'),垂直制表符('\v'),换行符('\n')返回非0值,否则返回0int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')数学函数,所在函数库为math.h、stdlib.h、string.h、float.hint abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数ex的值double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值double log(double x) 返回logex的值double log10(double x) 返回log10x的值double pow(double x,double y) 返回xy的值double pow10(int p) 返回10p的值double sqrt(double x) 返回+√x的值double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度double atan(double x) 返回x的反正切tan-1(x)值,x为弧度double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度double sin(double x) 返回x的正弦sin(x)值,x为弧度double tan(double x) 返回x的正切tan(x)值,x为弧度double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度x和y为直角边的长度,z2=x2+y2double ceil(double x) 返回不小于x的最小整数double floor(double x) 返回不大于x的最大整数void srand(unsigned seed) 初始化随机数发生器int rand() 产生一个随机数并返回这个数double poly(double x,int n,double c[])从参数产生一个多项式double modf(double value,double *iptr)将双精度数value分解成尾数和阶double fmod(double x,double y) 返回x/y的余数double frexp(double value,int *eptr) 将双精度数value分成尾数和阶double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数char *ecvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *fcvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *gcvt(double value,int ndigit,char *buf)将数value转换成字符串并存于buf中,并返回buf的指针char *ultoa(unsigned long value,char *string,int radix)将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *ltoa(long value,char *string,int radix)将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *itoa(int value,char *string,int radix)将整数value转换成字符串存入string,radix为转换时所用基数double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0 double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,int matherr(struct exception *e)用户修改数学错误返回信息函数(没有必要使用)double _matherr(_mexcep why,char *fun,double *arg1p,double *arg2p,double retval)用户修改数学错误返回信息函数(没有必要使用)unsigned int _clear87() 清除浮点状态字并返回原来的浮点状态void _fpreset() 重新初使化浮点数学程序包unsigned int _status87() 返回浮点状态字目录函数,所在函数库为dir.h、dos.hint chdir(char *path) 使指定的目录path(如:"C:\\WPS")变成当前的工作目录,成功返回0int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功返回0pathname为指定的目录名和文件名,如"C:\\WPS\\TXT"┏━━━━━━━━━━━━━━━━━━┓┃struct ffblk ┃┃{ ┃┃char ff_reserved[21]; /*DOS保留字*/┃┃char ff_attrib; /*文件属性*/ ┃┃int ff_ftime; /*文件时间*/ ┃┃int ff_fdate; /*文件日期*/ ┃┃long ff_fsize; /*文件长度*/ ┃┃char ff_name[13]; /*文件名*/ ┃┃} ┃┗━━━━━━━━━━━━━━━━━━┛attrib为文件属性,由以下字符代表┏━━━━━━━━━┳━━━━━━━━┓┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录┃┃FA_SYSTEM 系统文件┃FA_ARCH 档案┃┗━━━━━━━━━┻━━━━━━━━┛例:struct ffblk ff;findfirst("*.wps",&ff,FA_RDONLY);int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0void fumerge(char *path,char *drive,char *dir,char *name,char *ext)此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名存与path中.int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中. int getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称drive 指定的驱动器(0=当前,1=A,2=B,3=C等)direc 保存指定驱动器当前工作路径的变量成功返回0char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字节长为为止.错误返回NULLint getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等),返回可使用驱动器总数int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0int rmdir(char *pathname) 删除一个目录pathname,成功返回0char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径, ,此函数使用DOS的PATH变量,未找到文件返回NULL进程函数,所在函数库为stdlib.h、process.hvoid abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,并异常终止程序。
answer collect pleased不同选择题2-1关于纯虚函数和抽象类的描述中,(C )是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出2-2下列描述中,( D)是抽象类的特性。
A可以说明虚函数B可以进行构造函数重载C.可以定义友元函数D.不能定义该类对象2-3在下面类声明中,关于生成对象不正确的是()。
class point { public: int x; int y; point(int a,int b) {x=a;y=b;}};A.point p(10,2);B.point *p=new point(1,2);C.point *p=new point[2];D.point *p[2]={new point(1,2), new point(3,4)};2-4下列运算符中,()运算符不能重载。
A.&&B.[ ]C.::D.<<2-5在下列关键字中,用以说明类中公有成员的是(A )。
A.publicB.privateC.protectedD.friend2-6下列叙述中,不正确的是( C)。
A.构造函数必须和类同名B.构造函数和析构函数都没有返回值C.析构函数中不能加代码D.析构函数不能带参数2-7在公有继承的情况下,在派生类中能够访问的基类成员包括(C)A.公有成员B.保护成员C.公有成员、保护成员和私有成员D.公有成员和保护成员2-8以下关于异常处理的描述错误的是()。
A.C++程序中出现异常时,编译器不会进行提示B.将可能产生异常的代码放在try语句块内C.使用catch关键字接收并处理异常D.重抛异常可以在try语句块或者catch语句块中调用throw 实现2-9假设声明了一下的函数模板:template<class T>T max(T x, T y){return (x>y)?x:y;}并定义了int i; char c;错误的调用语句是(C)。
GESP C++四级样题卷(满分:100分考试时间:90分钟)学校:姓名:______________________题目一二三总分得分一、单选题(每题2分,共30分)题号123456789101112131415答案D D D D A C C A B B A B B B C1.在C++中,指针变量的大小(单位:字节)是()A.2B.4C.8D.与编译器有关2.以下哪个选项能正确定义一个二维数组()A.int a[][];B.char b[][4];C.double c[3][];D.bool d[3][4];3.在C++中,以下哪种方式不能用于向函数传递参数()A.值传递B.引用传递C.指针传递D.模板传递4.以下关于C++函数的形参和实参的叙述,正确的是()A.形参是实参的别名B.实参是形参的别名C.形参和实参是完全相同的D.形参用于函数声明,实参用于函数调用5.排序算法的稳定性是指()A.相同元素在排序后的相对顺序保持不变B.排序算法的性能稳定C.排序算法对任意输入都有较好的效果D.排序算法容易实现6.如果有如下二维数组定义,则a[0][3]的值为()int a[2][2]={{0,1},{2,3}};A.编译出错B.1C.3D.07.以下哪个选项能正确访问二维数组array的元素()A.array[1,2]B.array(1)(2)C.array[1][2]D.array{1}{2}8.以下哪个选项是C++中正确的指针变量声明()A.int*p;B.int p*;C.*int p;D.int*p*;9.在C++中,以下哪个关键字或符号用于声明引用()A.pointerB.&C.*D.reference10.以下哪个递推关系式表示斐波那契数列()A.F(n)=F(n-1)+F(n-2)+F(n-3)B.F(n)=F(n-1)+F(n-2)C.F(n)=F(n-1)*F(n-2)D.F(n)=F(n-1)/F(n-2)11.以下哪个函数声明在调用时可以传递二维数组的名字作为参数?A.void BubbleSort(int a[3][4]);B.void BubbleSort(int a[][]);C.void BubbleSort(int*a[]);D.void BubbleSort(int**a);12.在C++中,以下哪个关键字用来捕获异常()A.throwB.catchC.tryD.finally13.在下列代码的横线处填写(),可以使得输出是“2010”。
thoughtworks家庭作业C++版本商品类:#ifndef ITEM_H_#define ITEM_H_class SalesTax;//This represents the Items which don't have an Import duty or any sales taxclass Item{public://ConstructorsItem();Item (SalesTax *aSalesTax);//Interface Functions for Item//To calculate the price after tax and import dutyvirtual void CalculateTotalPrice();//To calculate the total tax and import dutyvirtual void CalculateTotalTax();//To set the price of the Itemsvoid SetPrice(double aPrice);//To set the number of the Itemsvoid SetNum(int aNum);//To set the message of the Itemsvoid SetMessage(char *src);//To get the message of the Itemschar* GetMessage();//To get the price of the Items before taxdouble getPrice();//To get the price of the items after taxdouble getTotalPrice();//To get the total tax and import duty of the itemsdouble getTax();//Dataprotected://Works as the Strategy of the Sales Tax problem.//If in future the tax calculation becomes more complicated for different Items//we will just have to change this Strategy. We can also subclass this Strategy class//for future expansion of the tax calculation strategySalesTax* iSalesTax;//Dataprotected://These are the basic properties of any Item.//Hence these are made protected members so that the subclasses of Item can inherit//these propertiesint iNum;double iPrice;double iTotalPrice;double iTotalTax;//the information of the inputchar message[100];};//This class represents the Items which have only Import Dutyclass ImportedItem : virtual public Item{public://ConstructorsImportedItem();//This constructor helps to create Items having only Import dutyImportedItem(SalesTax* aSalesTax, double aImportDuty);//Overridevirtual void CalculateTotalTax();double iImportDuty;};//This class represents the Items which have only Sales Tax but no Import Dutyclass NonFoodBookMedicalItem : virtual public Item{public://ConstructorsNonFoodBookMedicalItem();//This constructor helps to create Items having only Sales tax NonFoodBookMedicalItem(SalesTax* aSalesTax, double aRate);//Overridevirtual void CalculateTotalTax();protected:double iRate;};//This class represents the Items which have got both Import Duty as well as sales Tax class NormalItem: public ImportedItem, public NonFoodBookMedicalItem{public:NormalItem();//This constructor helps to create Items having both Sales tax and Import duty NormalItem(SalesTax* aSalesTax, double aRate, double aImportDuty);//Overridevirtual void CalculateTotalTax();};#endif /* ITEM_H_ */#include "SalesTax.h"#include "Item.h"Item::Item(){}Item::Item(SalesTax* aSalesTax):iSalesTax(aSalesTax),iPrice(0),iTotalPrice(0),iTotalTax(0){} void Item::CalculateTotalPrice(){iTotalPrice = iNum * iPrice + iTotalTax;}double Item::getTotalPrice(){return iTotalPrice;}void Item::CalculateTotalTax(){iTotalTax = iNum * iSalesTax->ComputeSalesTax(iPrice, 0, 0);}void Item::SetPrice(double aPrice){iPrice = aPrice;}void Item::SetNum(int aNum){iNum = aNum;}void Item::SetMessage(char *src){char *tmp = message;while((*tmp++ = *src++) != '\0');}char* Item::GetMessage(){return message;}double Item::getPrice(){return iPrice;}double Item::getTax()return iTotalTax;}ImportedItem::ImportedItem(){}ImportedItem::ImportedItem(SalesTax* aSalesTax, double aImportDuty):Item(aSalesTax){iImportDuty = aImportDuty;}void ImportedItem::CalculateTotalTax(){iTotalTax = iNum * iSalesTax->ComputeSalesTax(iPrice, 0, iImportDuty);}NonFoodBookMedicalItem::NonFoodBookMedicalItem(){}NonFoodBookMedicalItem::NonFoodBookMedicalItem(SalesTax* aSalesTax, double aRate):Item(aSalesTax) {iRate = aRate;}void NonFoodBookMedicalItem::CalculateTotalTax(){iTotalTax = iNum * iSalesTax->ComputeSalesTax(iPrice, iRate, 0);}NormalItem::NormalItem() {}NormalItem::NormalItem(SalesTax* aSalesTax, double aRate, double aImportDuty):Item(aSalesTax){iRate = aRate;iImportDuty = aImportDuty;}void NormalItem::CalculateTotalTax(){iTotalTax = iNum * iSalesTax->ComputeSalesTax(iPrice, iRate, iImportDuty);}商品⼯⼚#ifndef ITEMCREATOR_H_#define ITEMCREATOR_H_#include "Item.h"const int ITEM_WITH_NOSALESTAX_AND_IMPORTDUTY = 1;const int ITEM_WITH_NOSALESTAX_ONLY_IMPORTDUTY = 2;const int ITEM_WITH_ONLY_SALESTAX_AND_NOIMPORTDUTY = 3;const int ITEM_WITH_BOTH_SALESTAX_AND_IMPORTDUTY = 4;const double SALES_TAX_RATE = 10;const double IMPORT_DUTY_RATE = 5;class Not_A_Standard_Item_Type_Exception{public:void printerrormsg();};class ItemCreator{public:virtual Item* Create(int aItemId);};#endif /* ITEMCREATOR_H_ */#include "ItemCreator.h"#include "Item.h"#include "SalesTax.h"#include <iostream>using namespace std;void Not_A_Standard_Item_Type_Exception::printerrormsg(){cout<<"Not the right Item Type..."<<endl;}Item* ItemCreator::Create(int aItemId)SalesTax* st = new SalesTax();switch(aItemId){case ITEM_WITH_NOSALESTAX_AND_IMPORTDUTY:return new Item(st);break;case ITEM_WITH_NOSALESTAX_ONLY_IMPORTDUTY:return new ImportedItem(st,IMPORT_DUTY_RATE);break;case ITEM_WITH_ONLY_SALESTAX_AND_NOIMPORTDUTY:return new NonFoodBookMedicalItem(st,SALES_TAX_RATE);break;case ITEM_WITH_BOTH_SALESTAX_AND_IMPORTDUTY:return new NormalItem(st,SALES_TAX_RATE,IMPORT_DUTY_RATE);break;default:throw Not_A_Standard_Item_Type_Exception();}}税收政策:#ifndef SALESTAX_H_#define SALESTAX_H_//This class works as the Strategy of the Sales tax problemclass SalesTax{public://Default constructorSalesTax();//This function helps to compute the Sales Taxvirtual double ComputeSalesTax(double aPrice, double aRate, double aImportduty); private://This is an helper function which will round off the sales taxdouble RoundOff(double aTax);};#endif /* SALESTAX_H_ */#include "SalesTax.h"SalesTax::SalesTax(){}double SalesTax::ComputeSalesTax(double aPrice, double aRate, double aImportduty) {double tx = aPrice * aRate / (double(100));double ty = aPrice * aImportduty / (double(100));double rtx = RoundOff(tx);double rty = RoundOff(ty);return rtx + rty;}double SalesTax::RoundOff(double aTax){double floor = 0.0;double ceil = 0.0;//获取整数int taxTemp = (int)aTax;//获取⼩数部分double decimaltaxTemp = (double)(aTax - (int)taxTemp);//获取第⼀位⼩数int tempy = (int)(1000 * decimaltaxTemp) / 100;//获取第⼆第三为⼩数int tempz = (int)(1000 * decimaltaxTemp - tempy *100);//获取第⼆位⼩数int temp = (int)(tempz / 10);if(temp < 5){floor = (double)taxTemp + (double)tempy * 0.1;ceil = floor + 0.05;}{floor = (double)taxTemp + (double)tempy * 0.1 + 0.05;ceil = floor + 0.05;}return (aTax-floor) >= (ceil-aTax) ? ceil : floor;}main函数代码:#include "SalesTax.h"#include "Item.h"#include "ItemCreator.h"#include <iostream>#include <iomanip>#include <vector>#include <stdlib.h>#include <set>#include <string>#include <fstream>using namespace std;void decodeInfo(char *str, int &num, int &type, double &price); void initNoBasicTaxLib();//建⽴⼀个书本、⾷物、药品的库set<string> noBasicTaxLib;int main(int argc, char *argv[]){//初始化字典库initNoBasicTaxLib();//输出⽂件的名字char output[20];//分割⽤到的变量char str[100];int iNum;int iType;double iPrice;typedef vector<Item*> listOfItem;listOfItem::iterator theIterator;listOfItem Basket;double totalprice = 0;double totaltax = 0;//产品制造⼯⼚ItemCreator *itemCreator = new ItemCreator();for (int i = 1; i < argc; i++){totalprice = 0;totaltax = 0;ifstream in;ofstream out;char * src = argv[i];char *p = output;//建⽴输出⽂档的名字while ((*p++ = *src++) != '\0');output[0] = 'o';output[1] = 'u';//打开⽂件in.open(argv[i], ios::in);if (!in.is_open()){exit(0);}out.open(output, ios::out);if (!out.is_open()){while (in.getline(str, 100)){decodeInfo(str, iNum, iType, iPrice);try{Item* item = itemCreator->Create(iType);item->SetPrice(iPrice);item->SetMessage(str);item->SetNum(iNum);Basket.push_back(item);}catch(Not_A_Standard_Item_Type_Exception& e){e.printerrormsg();}}//while//根据读取到的数据处理theIterator = Basket.begin();int pos = 0;while (theIterator != Basket.end()){Basket.at(pos)->CalculateTotalTax();totaltax += Basket.at(pos)->getTax();Basket.at(pos)->CalculateTotalPrice();double price = Basket.at(pos)->getPrice();double price_after_tax = Basket.at(pos)->getTotalPrice();totalprice += price_after_tax;out << Basket.at(pos)->GetMessage() << " " << fixed << setprecision(2) << price_after_tax << endl; theIterator++;pos++;}out<< "------------" << endl;out<< "Sales Tax: " << fixed << setprecision(2) << totaltax << endl;out<< "Total: " << totalprice << endl;Basket.clear();//关闭⽂件in.close();out.close();}//forsystem("pause");return 0;}//初始化药品库void initNoBasicTaxLib(){noBasicTaxLib.insert("pills");noBasicTaxLib.insert("chocolates");noBasicTaxLib.insert("book");noBasicTaxLib.insert("bar");}//分析字符串void decodeInfo(char *str, int &num, int &type, double &price){bool imported_flag = false;bool basicTax_flag = true;const char *pImported = "imported";const char *pAt = "at";num = 0;char *pBegin = str;char *pEnd = pBegin;//得到商品的数量while (*pBegin == ' '){++pBegin;++pEnd;}while (*pEnd != ' ')++pEnd;}pBegin = pEnd;//获取商品是否为进⼝货//在整个字符串中找到atchar *at_tag;while (*pBegin != '\0'){if(*pBegin == ' '){++pBegin;++pEnd;}else if (*pEnd == ' ' || *pEnd == '\0'){if (pEnd - pBegin == 2 && strncmp(pBegin, pAt, 2) == 0){at_tag = pBegin;break;}if(pEnd - pBegin == 8 && strncmp(pBegin, pImported, 8) == 0) imported_flag = true;pBegin = ++pEnd;}else{++pEnd;}}//while//定位了at之后,获取商品的类型和价格//类型--pBegin;while (*pBegin == ' '){--pBegin;}char *pLast = pBegin;while(*pBegin != ' '){--pBegin;}++pBegin;++pLast;string type_str(pBegin, pLast);if (noBasicTaxLib.find(type_str) != noBasicTaxLib.end()){basicTax_flag = false;}if(basicTax_flag == true && imported_flag == true){type = 4;}else if (basicTax_flag == false && imported_flag == false){type = 1;}else if (basicTax_flag = true && imported_flag == false){type = 3;}else if (basicTax_flag == false && imported_flag == true){type = 2;}else{}//价格while (*pEnd == ' '){++pEnd;}price = atof(pEnd);//调整字符数组为输出格式*at_tag = ':';}。
Xcode升级后,常常遇到的遇到的警告、错误,解决⽅法从sdk3.2.5升级到sdk 7.1中间废弃了很多的⽅法,还有⼀些逻辑关系更加严谨了。
1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个⽅法的⽂档,替换掉这个⽅法即可。
2,警告:Declaration of "struct sockaddr" will not be visible outside of this function解决办法:在你的开源.m⽂件中添加 #import <netinet/in.h>3,警告:Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'解决办法:类型不匹配。
跳到出错的那⼀⾏,UIInterfaceOrientation强制转换为UIDeviceOrientation就⾏了。
4,警告:incompatible pointer types assigning to 'MyArrayList*'from 'NSMutableArray'解决办法:加⼊强制转换(MyArrayList*)5,警告:'&&' within '||'问题出处:if (exists && !isDirectory || !exists)………解决办法: if ((exists && !isDirectory) || !exists)………6,警告:Warning:The Copy Bundle Resources build phase contains this target's Info.plist file解决办法:将Info.plist⽂件移到Resources⽬录下,⽽不要直接放在target下。
Does Zooming Improve Image Browsing?Tammara T. A. Combs Computer Science Department Human-Computer Interaction Lab University of MarylandCollege Park, MD 20742tcombs@Benjamin B. Bederson Computer Science Department Human-Computer Interaction Lab University of MarylandCollege Park, MD 20742+1 301 405 2764bederson@ABSTRACTWe describe an image retrieval system we built based on a Zoomable User Interface (ZUI). We also discuss the design, results and analysis of a controlled experiment we performed on the browsing aspects of the system. The experiment resulted in a statistically significant difference in the interaction between number of images (25, 75, 225) and style of browser (2D, ZUI, 3D). The 2D and ZUI browser systems performed equally, and both performed better than the 3D systems.The image browsers tested during the experiment include Cerious Software’s Thumbs Plus, TriVista Technology’s Simple LandScape and Photo GoRound, and our Zoomable Image Browser based on Pad++.KeywordsEvaluation, controlled experiment, image browsers, retrieval systems, real-time computer graphics, Zoomable User Interfaces (ZUIs), multiscale interfaces, Pad++.INTRODUCTIONIn the past two decades, with the emergence of faster computers, the declining cost of memory, the popularity of digital cameras, online archives and even presentation slides, the amount of stored graphical information has skyrocketed. Having the ability to store and manipulate images is becoming more important as images are being incorporated into electronic documents [12]. These digital images are stored and electronically encoded for future retrieval. Hence, there is a growing need for more sophisticated ways of retrieving and browsing images. However, the advances of these tools have not grown as rapidly as the needs of potential users.There is a vast diversity of users and individual biases that should be taken into consideration as we move toward multimedia systems. Graphical information is being used throughout many systems to help bridge the gap between such differences as languages, gender, age and personality. Sometimes pictures really are worth a thousand words, but what good are they if the interfaces do not offer the support that users need? In this paper we focus on the browsing aspect of the interface.Browsing is not a new concept. Webster’s New World Dictionary gives a basic definition of the term browse, to examine in a casual way. Adults browse for clothes on racks at their favorite department stores and children browse for sweets at their local candy shops. Vendors and department store owners have realized how to capitalize on sales. They know in order to maximize the purchase of their items, browsing needs to be made easy. Most storeowners understand that people will not select what they cannot see. For this reason, merchandise is usually displayed in a manner that best suits the targeted user. Why should image browsers be any different? Just as librarians shelve books to make them easier for patrons to find, image browsers should display images in such a way that does not distract the user from the main task he/she is trying to perform. For instance, if a user is browsing for an image to include in a document, their browsing experience should not be such that it has made him/her forget the reason they sought the image in the beginning.In image browsing, screen real estate is very important because it seems as if there is never enough. We believe 3D and zooming make better use of screen space than scrolling. We describe our experiment and give some practical guidelines for future image browsers.Submitted to ACM Digital Library 1999HCIL Technical Report No. 99-05 (February 1999); /hcilIn order to get a basis for understanding the context from which our system was designed, we offer the following definitions:1.An Image Retrieval (IR) System is an applicationthat returns one or more images given somedescriptive information. This information can be in the form of:a)An image,b)Keywords or phrases, orc)Natural language.2.An Image Browser is an application that allowsusers to select one or more images from multipleimages. This browser has to:a)Be able to display multiple images at one time(possibly reduced resolution versions), andb)Support inspection of original full resolutionversions of an image.The returned set of images (results) obtained from the Image Retrieval query may be displayed in an Image Browser for further refinement of the search by the user. Often it is the case that the results of the query yield more images than the user desires, so he/she has to browse. It is unfortunate that many query systems ignore browsing and just give the results of the query perhaps in the form of a list. This makes it hard and sometimes impossible for a user to select exactly what he/she needs. After testing the features in many of the browsers we decided to contribute to the image browser community and make our own browser – a zoomable image browser (ZIB) (Figure 1). We designed ZIB where searching and browsing are tightly coupled. With ZIB, the images located in the browse area represent the results of the query posed in the search section. Both the search term and query results can be seen in one view.To begin our study we evaluated sixteen (16) image browsers (Table 1). We compared and contrasted many features of the commercial and shareware products to discover some of the most popular techniques used in image browsers. We especially targeted software packages that were designed for the purpose of browsing a collection of images. To our surprise, most of the image browsers did not deviate from the typical two-dimensional grid of thumbnails approach. We chose ThumbsPlus (Figure 2) to be the commercial browser we would later use in the experiment because it is a good example of a commercial image browser. ThumbsPlus is a grid of thumbnails that is easy to use and supports access to the full-size of Package Name of Company/Developer Corel Mosaic Corel CorporationPhotoMagic MicroGrafx Corporation PhotoCD Access Eastman Kodak Company GifDesk Jay WherleyFotoflood Image Manager EPICAD Design Incorporated Picture Publisher Micrografx Incorporated PhotoDisc PhotoDiscImage AXS Pro Digital Arts and Sciences ThumbsPlus Phillip CrewsACDSee ACD Systems Unlimited IrfanView32Irfan SkiljanVPIC Bob MontgomeryCompuPic Photodex CorporationExtensis Portfolio Extensis CorporationCumulus Canto SoftwarePowerPoint Microsoft Corporation Table 1: List of systems analyzedSystem Design of the Zoomable Image Browser (ZIB) We designed a system that integrates image browsing and image retrieval. Query formulation is allowed within the search area. Users have the option of performing a simple or an advanced search. Within the simple search, Users have the option of entering one word or one phrase on which the query will be performed. Within the advanced search, the user may form a query by using a combination of words and/or phrases and boolean connectives. The interface for the search area was written in TCL/TK and the search procedure was written in C++. Once query formulation is complete and the images which satisfy the query have been retrieved, the images are returned within the browse section.The results of the query appear in the lower (Browse) section and can be browsed by panning and zooming in and out of individual images as well as all images at once. The browse section was built using Pad++, a general purpose engine for writing zoomable user interface [2]. ZIB offers a unique advantage over many browsing systems in that the user has control of the tradeoff between the number of images displayed and the resolution of those images. For example, if ten images are present in the browse section and the user wants to hone in on four of the ten images,he/she can zoom in on the view and see the images enlarge before their eyes. This gives them higher resolution but fewer images. The inverse is also true. Users can zoom out to get lower resolution, but greater numbers of images. Users can also perform in-place zooming which allows them to see an imageat full resolution located in the same place in the same scene.While users perform successive searches, a history interface maintains a record of previous queries and displays a snapshot of the images that were returned with a particular query. In case users forget thesearch terms used to retrieve the corresponding set of images, they need only move the mouse cursor over the group of images they wish to inquire about and the search terms will appear at the bottom of the history section. Once users are sure they want a group of images redisplayed in the browse area, they simply click once on the point that is in the history section that depicts the set of images they would like to browse. The user may refer to the history in order to return to a previous search for reevaluation or refinement. The history section was also written inPad++ and it too allows panning and zooming.Figure 1: Zoomable Image Browser (ZIB) allows panning and zooming of individual images as well as the entire view.Search was implemented using standard booleancombinations. This system, however, is not a boolean “free text” retrieval system. Terms permitted within a query are extracted from a thesaurus. The thesaurus defines the controlled vocabulary of allowable terms.The thesaurus was created from the terms used to index the images. These indexed terms were then organized into a taxonomy and presented to the user as the thesaurus. The terms used to index the images are terms that would describe the contents of the images.Zoomable User InterfacesZoomable User Interfaces (ZUIs) are a visualization technique that provides access to spatially organized information. A ZUI lets users zoom in and out, or pan around, to view much more information than can normally fit on a single screen.ZIB takes advantage of the unique capabilities offered by ZUIs. In a preliminary study, users were able to change their viewpoint and magnification of images within seconds. Many subjects even commented that panning and zooming were very easy and theythought the image-browsing world could benefit from a system such as ZIB.Although there are many aspects of ZIB that we need to evaluate, we chose to perform a controlledexperiment on browsing alone. We were interested in seeing if users would browse differently using 2D,ZUI or 3D environments. The 3D image browsers that we evaluated belong to a company out of Chicago,TriVista, which we are collaborating with. These 3D systems were written in VRML and add a thirddimension to image browsing. It was the developers’hope that the user would view the images as being in a real world environment and thus have an easier and more enjoyable time browsing.Descriptions of Browsers ChosenThe first image browser we compared to ZIB was ThumbsPlus (T) (see Figure 2), a program that allows users to view thumbnails of images. On the left side of the screen, is a hierarchy of the folders on the current hard drive. The right side is the browsing window, which allows the user to pan via a horizontal scroll bar. Thumbnails can be clicked on, and a full-sized depiction of the image is brought up in a second window. It does not enable users to zoom in or out of the entire view. Because, selected images require a separate window to be opened, there could potentially be n + 1 windows, where n is the number of images contained in the current directory.Browse W indowFigure 2: ThumbsPlus (T), a 2D imagebrowser that we used in our experiment.The second system that we evaluated was the Simple LandScape (L) (Figure 3). Simple LandScape is a 3D image scene that allows you to view billboarded thumbnails of images in 3D as you “walk” or “fly”through the scene. The images will always face you as you move through the scene (using the mouse or the arrow keys). Clicking in a specific thumbnail's area will cause a larger version of the image to appear in a separate window. Users can request a higher overview, or the “from above” view, which enables them to examine more of the images from where theyare in the scene.Figure 3: Simple LandScape (L), a VRML image browser created by TriVista Corporation.The fourth and final browser we studied was the PhotoGoRound (P) (Figure 4), which draws on a familiar metaphor to organize information: a "lazy-suzan" layout, sometimes used in stores for a card rack or for a jewelry case. The entire scene can be rotated using the upper or lower disk, and clicking the sphere causes the scene to automatically spin. The thumbnails are “billboarded”, so they always face the viewer as the carousel spins. As with the previous two browsers, once the user selects an image, itappears in a separate window.Figure 4: PhotoGoRound (P), a VRML image browser cretated by TriVista that uses a “lazy-susan” metaphor.Previous StudiesAfter choosing the systems we wanted to evaluate, we reviewed a number of studies that were similar to the one we wanted to perform. There have not been many studies on how image browser interfaces affect users abilities to select, deselect, or zoom in and out of images. This is especially true when trying to find how different browsers scale up when the number of images is increased.The first study is the Zoom Browser [10] in which a web-browser (text-only) downloads HyperText Mark-up Language (HTML) documents from the World Wide Web (WWW) and splits them into thumbnails of pages. Users can navigate through the pages,clicking on links in the text to load new documents.There is also a sense of history keeping in thatpreviously viewed documents remain visible. Users liked the overview achieved from the display of the pages in the Zoom Browser. However, the Zoom browser does not scale up well. Once a certain number of images is displayed on the page, the information displayed on the pages is no longer useful.In a second study, Protofoil [17], researchers built several information access applications whereinformation (documents and text) was displayed as thumbnails in a grid. Users complained that they were not able to see the contents of the thumbnails clearly so the authors introduced intermediate page sizes allowing users to have a better detail view of the image. There was no concept of zooming used for this image browser.In a third study, the Pad++ group tested general navigation and history-related effectiveness using PadPrints [9], a WWW companion. PadPrints worksalong side a web browser to serve as a history aid building a hierarchy of pages visited by the user. The pages are displayed as thumbnails of images that also serve as links to the represented page. Users are permitted to view the entire graphical history or to zoom in to focus on the particular part of their history. Subjects were asked to navigate the Web with and without the zoomable web companion and for both of the tasks (textual and image-based pages), there were fewer pages accessed, and retrieval time was significantly reduced. This showed that some of the concepts used in PadPrints were effective in navigating. However, PadPrints serves as a web companion and it was not designed as a stand alone image browser. We used some of the same ideas from PadPrints in designing and developing the zoomable image browser. We presume that multiscale contextual display of the images can provide substantial support for browsing.A fourth, and particularly relevant study [11], is that of a group of students from the University of Maryland. The main focus of this study was to come up with an optimal tradeoff between image size and the number of images that could be displayed at once. They found that increasing the number of images while reducing their size resulted in reduced task completion time. However, they only tested a maximum of thirty-six (36) images. They concluded that further testing should be done with larger image sets, to determine what the optimal number of images viewed simultaneously are.EXPERIMENTWe performed a user study to assess each of the browsing systems. We adopted the hypothesis that there would be no statistically significant differences in the time it took users to locate the targeted images, the browser users preferred, or in the number of incorrect selections made on a particular browser. This user study however did result in a statistical significance in each of these dependent variables, as we will discuss below.EquipmentThumbsPlus, Simple LandScape and PhotoGoRound are windows-based programs while the zoomable image browser runs on Linux. Because each subject evaluated all four browsers, we used two machines to avoid switching between operating systems on one machine. We were careful to eliminate any windows management tasks to avoid any differences is the two operating systems.Both of the computer systems used were 166 MHz Pentium PCs with 17”monitors. One system was running Windows NT 4.0 with a resolution of 1024 x 768, while the other system ran Linux with a resolution of 1280 x 1024. Because we wanted the machines to be of comparable speed, the Windows NT machine had 114 megabytes of RAM and the Linux machine had 64 megabytes of RAM. Browsing with the windows-based systems was performed using a 2-button mouse and browsing with the zoomable browser required the use of a 3-button mouse. We wrote a program that automated and recorded the questions and tasks presented to the subjects.StimuliEach subject was asked to browse through a set of images until he/she had located the target image. They used browsing functionality specific to the browsing system the were working on at the time. For example, a user may have enabled autospin in the PhotoGoRound to complete the task of finding animage of strawberries as pictured below in Figure 5.Figure 5: Example image that subjectswere asked to browse for during theexperiment.TrainingBefore beginning the experiment, each participant was educated in the use of image browsers in general. We wanted to be sure each subject had a clear understanding of the assignment they were about to perform. Subjects completed five pre-tasks using the first image browser that they would use. There was no time limit to the pre-tasks and subjects wereinformed that they did not have to proceed with any further tasks until they felt comfortable with the browsing system. The goals of training were to verify that our subjects understood the navigation techniques for the browser and also to familiarize them with the program we used to automate the questions. Because training had already been administered to subjects on browsing and performance times were not being recorded, we did not repeat all of the previous techniques for training on the secondary browsers. Subjects were simply given the sheet of instructions before beginning the tasks associated with that browser and asked to read it and continue with the experiment when they were ready.MethodThe primary design of this experiment was a 3x4 block design. Each subject was given matched tasks for the four browsers. The independent variables were the different browsers (ThumbsPlus, Zoomable Image Browser, Simple LandScape, and PhotoGoRound) and number of images (25, 75, 225). The orderings of both independent variables were randomized.We conducted two experiments simultaneously. The first experiment used the method of between-subject testing. Each participant was randomly assigned one of the four browsers as their primary browser for use in this first experiment. Each user was instructed to browse through each of the three image sets. When the test user was ready, he/she would initiate a request for a new image. They would then return to the browser assigned to then and signify that they had found the correct image by selecting it. Browsing time for each of these images was recorded.The user repeated this process until the five images for each image set had been correctly selected. After each image set of five images, there was a small task to measure recall. Subjects were instructed to find an image they would like to send to a friend. Time was not recorded for this task. The purpose was to give subjects exploratory time as well as to observe how they would use the browser when there were no time constraints. Subjects were presented with four images to test recall. Subjects were instructed to select either “Yes, the image was in the set of images”or “No, I don’t recall seeing this particular image in the set.”They then evaluated their primary browser using a questionnaire and they were asked to give feedback on anything they felt wasn’t addressed during the experiment and they were also asked for any suggestions for improvement of the system.After the debriefing segment of each test user’s primary browser, they each began the second experiment, a with-in-subject test. With-in-subject design requires all the participants to use all of the systems that are being tested. Participants evaluated their secondary browsers in random order. In addition to the browsers being presented in random order, each participant only evaluated one of the three image sets. For example, one test user evaluated ZIB as her primary browser using the set of 25 images, then with 75 images, and then with 225 images. She then evaluated Simple LandScape with 25 images, PhotoGoRound with 25 images and ThumbsPlus with 25 images. Just as the order for evaluation of the three image browsing systems was randomized, so were the image sets.Sixteen dependent variables were analyzed in the experiment. Mean performance time was measured for each of the three sets of images for the primary browser. Time to complete the task was calculated from the time that the subject initiated a request for a new question until they completed the task by selecting the targeted image. The number of incorrect selections was measured for the three image sets for the primary browser and the three secondary browsers. If an incorrect selection was made, subjects were instructed to continue searching until the correct image was found. A correct selection was eventually made 100% of the time. Percentage correctly recalled was measured for each of the three image sets for the primary browser. We calculated this by placing the total number correctly recalled over four (total number possibly correct).Lastly we measured mean subjective satisfaction ratings for each browser. We calculated these using questions from the Questionnaire for User Interaction Satisfaction (QUIS) developed at the University of Maryland [20] as well as questions specifically related to image browsing. All of the questions were based on the QUIS format and were therefore on a scale of one to nine.SubjectsThere were 30 participants involved in this experiment, most of whom were students at the University of Maryland, College Park with various backgrounds including Computer Science (45%), Electrical Engineering (20%), Graphic Design (10%)and Library Information Services (20%). Approximately 40% of the subjects were female and 60% of the subjects were male.Participants’ages were recorded using ranges so they would not feel uncomfortable disclosing their ages. From the data we collected, 45% of the participants were between the ages of 18 and 25, 40% between 26 and 35 and 15% between 36 and 45. 97% of subjects reported they were experts on the World Wide Web (WWW) with the average user browsing 14 hours per week. Users also reported using a personal computer (PC) an average of 36 hours per week.Each subject was paid $10 for participating in the experiment.ResultsWe observed a statistically significant interaction effect between the browser and the number of images viewed with that browser for performance time. ZIB proved to be faster than the other browsers for each image set, although it was only significantly faster than Simple LandScape and PhotoGoRound (F2,18 = 12.359, p < .0005). Even with 225 images, ZIB was not significantly faster than ThumbsPlus (See Figure 6). For an effect to be considered significant, p had to be less than or equal to 0.05.Figure 6: Mean performance time perbrowser for each image set.There was also a statistically significant interaction effect between browser and number of images for user satisfaction (see Figure 7). Again, ZIB had the highest user satisfaction ratings, but it was only significantly faster than Simple LandScape and PhotoGoRound (F3,29 = 15.667, p < .0005). ZIB was not significantly preferred over ThumbsPlus.Figure 7: Mean user satisfaction ratingsfor all browsers.There were no significant ordering effect as it relates to user satisfaction for the primary browser (F3,25 = .745, p = .535). Also there were no significant differences in the browser test subjects preferred for the set of 75 images (F3,20 = 2.463, p = .092) or 225 images (F3,26 = 2.127, p = .121).Figure 8: Mean user satisfaction ratingsfor primary browsers averaged on allimage sets.Subjects recalled images with 15% higher accuracy using ZIB compared with ThumbsPlus with our maximum number of images (see Figure 9).Figure 9: Average percentage of imagescorrectly recalled.Also, there was a large number of incorrect selections (Figure 10) made for PhotoGoRound and Simple LandScape while relatively few were made for ThumbsPlus and ZIB.Figure 10: Total number of incorrectselections made.AnalysisThe results of this experiment showed that the zoomable image browser as well as the traditional 2D grid of thumbnails works best for performance time and user satisfaction. Users also made fewer incorrect selections for ZIB and ThumbsPlus. While the above statements are certainly true, we should note that all browsers did fairly well with performance time and recall with the small image set. With the maximum number of images, there was no preference toward ZIB, but ZIB had the fastest performance time. Another peculiar observation we made was that roughly half of the subjects did not zoom when given 225 images in ZIB despite the fact that we gave training in zooming, However, there was still a performance time improvement. Perhaps it was because all the images were on one screen and they never had to adjust the view if they chose not to.We decided to maximize all browser screens to give the user maximum browsing space. However, this introduced a confounding variable because the 3D browsing systems used less screen space than the other two browsers did. This was due to the setup and design of the 3D systems, which was out of our control. Perhaps this is why performance time for the 3D systems was not as fast as the other browsers. RecallTest users had to do a substantial amount of scrolling in ThumbsPlus with 225 images. Perhaps this accounts for the 15% difference in recall compared to ZIB. Conceivably moving the scroll bar distracted them from the task and they were unable to remember the images that they had just stored in their short-term memory.Incorrect SelectionsA selection was considered incorrect when the user selected an image other than the target. Once an incorrect selection was made, the user continued to browse until the correct image was selected. Most incorrect selections were accumulated with the PhotoGoRound and Simple LandScape browsers. Perhaps this is due to the movement of the scenes. Users tried to select images from the PhotoGoRound while it was still spinning. Most of the time the result was the selection of an unwanted image. On the other hand, incorrect selections were relatively low in ThumbsPlus and ZIB. An observation that we made, as it relates to ZIB, is that as the number of images increased, so did the number of incorrect selections. Oddly enough, this was the only browser where there was a direct correlation between number of images and number of incorrect selections. An explanation we offer for this was gathered from observing the subjects. Despite having 225 images on the screen at one time, most users still did not zoom. They stayed zoomed out and thus could not see the images clearly. Qualitative ResultsWe gathered some qualitative results from our users as they performed the experiment. While many subjects said PhotoGoRound was the most entertaining, the most popular comment was that users did not like or wanted to change the speed of rotation. The Zoomable Image Browser, repeatedly said to be the easiest, received many comments。