Вы находитесь на странице: 1из 23

Report On Laser Printer

Submitted To Mr. Vishal Sood


Associate Professor

Submitted By Hardeep Singh (266) Jugraj Singh Deepinder singh Inderjit Singh

P.C.T.E

Punjab College of Technical Education Baddowal.

Data Glove

Data Glove Interaction

In this session, you are going to learn on how to setup the data glove and use it for interaction in OpenGL Performer. The 5DT Data Glove Ultra is a hand data motion capturing solution for animation and virtual reality. This glove measures finger flexure as well as the abduction between the fingers. Finger flexure is measured at two places (1st joint (knuckle), 2nd joint) on each finger.

Connecting the glove

Connect the glove to the PC as shown in the Figure above. You can use Glove Manager (Start-> All Programs-> 5DT-> Data Glove Ultra-> Glove Manager) to test the operation of the glove. The details of the operation can be found in Section 4 of the 5DT Data Glove Ultra Manual, also available from the Start menu.

Setting up the glove


1. After the data glove is connected, it is time to set it up for interaction in our program. First of all, the necessary header files need to be included.
#include <stdio.h> #include <string.h> #include <windows.h> // for Sleep

// --The data glove header file #include "fglove.h"

2. The variables are declared.

// Variable declarations fdGlove *glove = NULL; char *szPort = "USB"; //the dataglove //type of port //string to store the port to open

char szPortToOpen[6];

int glovetype = FD_GLOVENONE; //glove type

3. Next, the USB ports available on the computer are scanned to detect the available gloves. The number of gloves found during the scan will be returned as an integer value. The first parameter of int fdScanUSB(unsigned short *aPID, int *nNumMax) is a pointer to an unsigned short array of length nNumMax. The USB Product IDs of the gloves found are returned in this array of which the following PIDs are defined:

DG14U_R Data Glove 14 Ultra Right-hand DG14U_L Data Glove 14 Ultra Left-hand DG5U_R Data Glove 5 Ultra Right-hand DG5U_L Data Glove 5 Ultra Left-hand

// Glove connected to USB port strcpy(szPortToOpen, szPort);

//Test the USB port of which the glove is connected if (strcmp(szPort,"USB") == 0) { unsigned short aPID[4]; int nNumFound = 4; int nChosen = 0; //USB product ID of the gloves //Number of USB port found //Glove chosen

// Scan the USB for the available glove fdScanUSB(aPID,nNumFound);

// Print out the available gloves in the console for (int c = 0; c < nNumFound; c++) { printf("Available USB Gloves:\n"); printf("%i - ",c); switch (aPID[c]) { case DG14U_R: printf("Data Glove 14 Ultra Right\n"); break; case DG14U_L: printf("Data Glove 14 Ultra Left\n"); break; case DG5U_R:

printf("Data Glove 5 Ultra Right\n"); break; case DG5U_L: printf("Data Glove 5 Ultra Left\n"); break; default: printf("Unknown\n"); } } // Getting user input printf("Please enter option:"); scanf("%i",&nChosen); sprintf(szPortToOpen,"USB%i",nChosen);

// Initialise the glove device on the specified port fdOpen(szPortToOpen); }

When the glove(s) is found, a prompt is displayed for the user to choose the desired glove to open.
4. Test that the glove open process is carried out successfully. NULL is returned if an error occurred.

printf("Attempting to open glove on %s ..", szPortToOpen);

// Initialising glove and make sure that it is not NULL if((glove = fdOpen(szPortToOpen)) == NULL) { printf("Failed!");

return -1; } else printf("Succeeded!");

5. Next, check the type of currently connected glove and print the details. The number of sensor is also obtained

// Obtains the type of the currently connected glove char *szType = "?"; glovetype = fdGetGloveType(glove); switch (glovetype) { case FD_GLOVENONE: szType = "None"; break; case FD_GLOVE7: szType = "Glove7"; break;

case FD_GLOVE7W: szType = "Glove7W"; break; case FD_GLOVE16: szType = "Glove16"; break; case FD_GLOVE16W: szType = "Glove16W"; break; case FD_GLOVE5U: szType = "DG5 Ultra serial"; break; case FD_GLOVE5UW: szType = "DG5 Ultra serial, wireless"; break; case FD_GLOVE5U_USB: szType = "DG5 Ultra USB"; break; case FD_GLOVE14U: szType = "DG14 Ultra serial"; break; case FD_GLOVE14UW: szType = "DG14 Ultra serial, wireless"; break; case FD_GLOVE14U_USB: szType = "DG14 Ultra USB"; break; }

// Print the glove type, indicating whether it is right- or left- handed printf( "glove type: %s\n", szType ); printf( "glove handedness: %s\n",

fdGetGloveHand(glove)==FD_HAND_RIGHT?"Right":"Left" );

// Obtains the number of available sensors values int iNumSensors = fdGetNumSensors(glove); printf( "glove num sensors: %d\n", iNumSensors );

FD_GLOVE7 and FD_GLOVE7W refer to the original 5+2 (tilt angles) sensor glove (5DT Data Glove 5). The W suffix indicates a wireless model. FD_GLOVE16 and FD_GLOVE16W refer to the Data Glove 16. FD_GLOVE14, FD_GLOVE14W, and FD_GLOVE14_USB refer to the Data Glove 14 Ultra. The USB suffix refers to the Universal Serial Bus interface. In order to accommodate all glove types the fdGetNumSensors() function currently returns 18 sensors. The additional two sensors are defined as the original tilt angles that are not present in the 16- sensor glove.

Although the 5-sensor glove can measure only average flexure, the driver will attempt to fill in missing values. The number of sensors returned can therefore be of higher dimension.

Sensor Positions for the 5DT Data Glove 5

Sensor Mappings for the 5DT Data Glove 5 and 5DT Data Glove 5 Ultra

* Both these driver sensor indices will return the same value when the 5DT Data Glove 5 or Data Glove Ultra is used + Not available on the Data Glove 5 Ultra

6. In the simulation loop, print the glove scaled values. The current gesture is also obtained and printed.

// Simulation loop for (int i=0; i<10; i++ ) { // Value for the current gesture int gesture;

if (glovetype==FD_GLOVE7 || glovetype==FD_GLOVE7W) { // Display the glove scaled values printf("Gloves scaled values"); printf("Thumb %.1f ", fdGetSensorScaled(glove,FD_THUMBNEAR));

printf("Index

%.1f ",

fdGetSensorScaled(glove,FD_INDEXNEAR)); printf("Middle %.1f ", fdGetSensorScaled(glove,FD_MIDDLENEAR)); printf("Ring %.1f ",

fdGetSensorScaled(glove,FD_RINGNEAR)); printf("Little %.1f \n",

fdGetSensorScaled(glove,FD_LITTLENEAR)); printf( "roll=%.1f,pitch=%.1f\n", fdGetSensorScaled(glove,FD_ROLL), fdGetSensorScaled(glove,FD_PITCH)); } else { // Display the glove scaled values printf("Gloves scaled values"); printf("ThumbNear %.1f,",

fdGetSensorScaled(glove,FD_THUMBNEAR)); printf("ThumbFar %.1f,",

fdGetSensorScaled(glove,FD_THUMBFAR)); printf("ThumbIndex %.1f ",

fdGetSensorScaled(glove,FD_THUMBINDEX)); printf("IndexNear %.1f,",

fdGetSensorScaled(glove,FD_INDEXNEAR)); printf("IndexFar %.1f,",

fdGetSensorScaled(glove,FD_INDEXFAR)); printf("IndexMiddle %.1f ",

fdGetSensorScaled(glove,FD_INDEXMIDDLE));

printf("MiddleNear

%.1f,",

fdGetSensorScaled(glove,FD_MIDDLENEAR)); printf("MiddleFar %.1f,",

fdGetSensorScaled(glove,FD_MIDDLEFAR)); printf("MiddleRing %.1f ",

fdGetSensorScaled(glove,FD_MIDDLERING)); printf("RingNear %.1f,",

fdGetSensorScaled(glove,FD_RINGNEAR)); printf("RingFar %.1f,",

fdGetSensorScaled(glove,FD_RINGFAR)); printf("RingLittle %.1f ",

fdGetSensorScaled(glove,FD_RINGLITTLE)); printf("LittleNear %.1f,",

fdGetSensorScaled(glove,FD_LITTLENEAR)); printf("LittleFar%.1f ", fdGetSensorScaled(glove,FD_LITTLEFAR)); printf("ThumbPalm %.1f ",

fdGetSensorScaled(glove,FD_THUMBPALM)); printf("WristBend %.1f \n",

fdGetSensorScaled(glove,FD_WRISTBEND)); printf( "roll=%.1f,pitch=%.1f\n", fdGetSensorScaled(glove,FD_ROLL), fdGetSensorScaled(glove,FD_PITCH)); }

// Obtain the current gesture being performed gesture = fdGetGesture(glove); printf("Gesture %d\n", gesture);

// Wait for a while before the next iteration Sleep(1000); }

It is also possible to obtain the glove raw data by using unsigned short fdGetSensorRaw(fdGlove *pFG, int nSensor)

Gesture Illustration 7. Finally, close the glove device and frees the communication port

printf( "closing glove\n" );

// Frees the glove device and communications port fdClose(glove);

Data Glove Interaction


Now, it is time to use the data glove as an interaction device in OpenGL Performer. A particular gesture will cause an operation to be carried out on the 3D model. 1. Add Step 1 to 4 above to the basic model loading program that you have created earlier. 2. Make the root node which is a type of pfNode to be the child of pfDCS, a branch of node that represents a dynamic coordinate system. It is used here as we want to change the transformation of the 3D model during the execution of the application. Remember to replace the child of pfScene with the dcs node instead of the pfNode node. The other part of the program remains the same.

// Add the 3D model as a child of pfDCS node pfDCS *dcs = new pfDCS; dcs->addChild(root);

scene->addChild(dcs);

3. Put the statements that set the viewpoint of the channel (previously in the simulation loop) before the simulation loop. Declare as well as initialise the variables to be used in the simulation loop.

// Set the initial viewpoint view.hpr.set(45.0f, -10.0f, 0); view.xyz.set(20.0f, -20.0f, 5.0f); chan->setView(view.xyz, view.hpr);

// Variable declaration float rotX=0.0f, scale=1.0f;

4. In the simulation loop, detect the current gesture. Perform some action on the 3D model based on the gesture. Here, gesture 1 will cause the model to rotate along the X axis, while gesture 3 will enlarge the model. Gesture 15 will cause the scene to be reset to its original stage.

// Simulation loop while (t < 40.0f) { int gesture;

pfSync();

// Obtain the current gesture being performed gesture = fdGetGesture(glove); printf("Gesture %d\n", gesture);

// Perform some action on the object based on the gesture // performed if(gesture == 1) { // Changing the pitch value - Rotation along X axis dcs->setRot(0.0f, rotX, 0.0f); rotX +=0.05f; } else if(gesture == 3) { // Enlarge the model dcs->setScale(scale); scale += 0.01f; } else if(gesture == 15) { // reset the model rotX=0.0f; scale=1.0f; dcs->setRot(0.0f, rotX, 0.0f); dcs->setScale(scale); }

pfFrame(); }

5. Now, you are ready to compile the program and interact with the model using the data glove!

Extra exercise for those interested


Add more interaction using the different available gesture. You can translate the 3D model, rotate it along other axes, etc.

Summary
In this session, you have learned how to setup and use the data glove. For more information about the data glove SDK, please refer to the 5DT Data Glove Ultra Manual found at Start-> All Programs-> 5DT-> Data Glove Ultra-> 5DT Data Glove Ultra Manual

Laser Printer

History
The laser printer was invented at Xerox in 1969 by researcher Gary Stark weather, who had an improved printer working by 1971 and incorporated into a fully functional networked printer system by about a year later. The prototype was built by modifying an existing xerographic copier. Stark weather disabled the imaging system and created a spinning drum with 8 mirrored sides, with a laser focused on the drum. Light from the laser would bounce off the spinning drum, sweeping across the page as it traveled through the copier. The hardware was completed in just a week or two, but the computer interface and software took almost 3 months to complete. The first commercial implementation of a laser printer was the IBM model 3800 in 1975, used for high-volume printing of documents such as invoices and mailing labels. It is often cited as "taking up a whole room," implying that it was a primitive version of the later familiar device used with a personal computer. While large, it was designed for an entirely different purpose. Many 3800s are still in use. The first laser printer designed for use in an office setting was released with the Xerox Star 8010 in 1981. Although it was innovative, the Star was an expensive ($17,000) system that was purchased by only a relatively small number of businesses and institutions.

After personal computers became more widespread, the first laser printer intended for a mass market was the HP LaserJet 8ppm, released in 1984, using a Canon engine controlled by HP software. The HP LaserJet printer was quickly followed by laser printers from Brother Industries, IBM, and others. First-generation machines had large photosensitive drums, of circumference greater than the paper length. Once faster-recovery coatings were developed, the drums could touch the paper multiple times in a pass, and could therefore be smaller in diameter.

How it works
Raster image processing

Each horizontal strip of dots across the page is known as a raster line or scan line. Creating the image to be printed is done by a Raster Image Processor (RIP), typically built into the laser printer. The source material may be encoded in any number of special page description languages such as Adobe PostScript (PS, BR-Script), HP Printer Command Language (PCL), or Microsoft XML Page Specification (XPS), as well as unformatted textonly data. The RIP uses the page description language to generate a bitmap of the final page in the raster memory. For fully graphical output using a page description language, a minimum of 1 megabyte of memory is needed to store an entire monochrome letter/A4 sized page of dots at 300 dpi. At 300 dpi, there are 90,000 dots per square inch (300 dots per linear inch). A typical 8.5 11 sheet of paper has 0.25-inch (6.4 mm) margins, reducing the printable area to 8.0 10.5 inches (270 mm), or 84 square inches. 84 sq/in 90,000 dots per sq/in = 7,560,000 dots. Meanwhile 1 megabyte = 1,048,576 bytes, or 8,388,608 bits, which is just large enough to hold the entire page at 300 dpi, leaving about 100 kilobytes to spare for use by the raster image processor.

Charging
In older printers, a corona wire positioned parallel to the drum, or in more recent printers, a primary charge roller, projects an electrostatic charge onto the photoreceptor (otherwise named the photo conductor unit), a revolving photosensitive drum or belt, which is capable of holding an electrostatic charge on its surface while it is in the dark.

An AC bias is applied to the primary charge roller to remove any residual charges left by previous images. The roller will also apply a DC bias on the drum surface to ensure a uniform negative potential. Numerous patents describe the photosensitive drum coating as a silicon sandwich with a photo charging layer, a charge leakage barrier layer, as well as a surface layer. One version uses amorphous silicon containing hydrogen as the light receiving layer, Boron nitride as a charge leakage barrier layer, as well as a surface layer of doped silicon, notably silicon with oxygen or nitrogen which at sufficient concentration resembles machining silicon nitride.

Exposing
The laser is aimed at a rotating polygonal mirror, which directs the laser beam through a system of lenses and mirrors onto the photoreceptor. The cylinder continues to rotate during the sweep and the angle of sweep compensates for this motion. The stream of rasterized data held in memory turns the laser on and off to form the dots on the cylinder. Lasers are used because they generate a narrow beam over great distances. The laser beam neutralizes (or reverses) the charge on the black parts of the image, leaving a static electric negative image on the photoreceptor surface to lift the toner particles. Some non-laser printers expose by an array of light emitting diodes spanning the width of the page, rather than by a laser ("exposing" is also known as "writing" in some documentation).

Developing
The surface with the latent image is exposed to toner, fine particles of dry plastic powder mixed with carbon black or coloring agents. The charged toner particles are given a negative charge, and are electrostatically attracted to the photoreceptor's latent image, the areas touched by the laser. Because like charges repel the negatively charged toner will not touch the drum where the negative charge remains.

Transferring

The photoreceptor is pressed or rolled over paper, transferring the image. Higher-end machines use a positively charged transfer roller on the back side of the paper to pull the toner from the photoreceptor to the paper.

Fusing
The paper passes through rollers in the fuser assembly where heat (up to 200 Celsius) and pressure bond the plastic powder to the paper. One roller is usually a hollow tube (heat roller) and the other is a rubber backing roller (pressure roller). A radiant heat lamp is suspended in the center of the hollow tube, and its infrared energy uniformly heats the roller from the inside. For proper bonding of the toner, the fuser roller must be uniformly hot. Some printers use a very thin flexible metal fuser roller, so there is less mass to be heated and the fuser can more quickly reach operating temperature. If paper moves through the fuser more slowly, there is more roller contact time for the toner to melt, and the fuser can operate at a lower temperature. Smaller, inexpensive laser printers typically print slowly, due to this energy-saving design, compared to large high speed printers where paper moves more rapidly through a high-temperature fuser with a very short contact time.

Cleaning
When the print is complete, an electrically neutral soft plastic blade cleans any excess toner from the photoreceptor and deposits it into a waste reservoir, and a discharge lamp removes the remaining charge from the photoreceptor. Toner may occasionally be left on the photoreceptor when unexpected events such as a paper jam occur. The toner is on the photoconductor ready to apply, but the operation failed before it could be applied. The toner must be wiped off and the process restarted. Multiple steps occurring at once

Once the raster image generation is complete all steps of the printing process can occur one after the other in rapid succession. This permits the use of a very small and compact unit, where the photoreceptor is charged, rotates a few degrees and is scanned, rotates a few more degrees and is developed, and so forth. The entire process can be completed before the drum completes one revolution. Different printers implement these steps in distinct ways. Some "laser" printers actually use a linear array of light-emitting diodes to "write" the light on the drum (see LED printer). The toner is based on either wax or plastic, so that when the paper passes through the fuser

assembly, the particles of toner melt. The paper may or may not be oppositely charged. The fuser can be an infrared oven, a heated pressure roller, or (on some very fast, expensive printers) a xenon flash lamp. The Warm Up process that a laser printer goes through when power is initially applied to the printer consists mainly of heating the fuser element.

Color laser printers

Color laser printers and black (CMYK).

use

colored toner (dry

ink),

typically cyan, magenta, yellow,

While monochrome printers only use one laser scanner assembly, color printers often have two or more scanner assemblies. Color printing adds complexity to the printing process because very slight misalignments known as registration errors can occur between printing each color, causing unintended color fringing, blurring, or light/dark streaking along the edges of colored regions. To permit a high registration accuracy, some color laser printers use a large rotating belt called a "transfer belt". The transfer belt passes in front of all the toner cartridges and each of the toner layers are precisely applied to the belt. The combined layers are then applied to the paper in a uniform single step. Color printers usually have a higher cost per page production cost than monochrome printers.

DPI Resolution

1200 DPI printers were commonly available during 2008. 2400 DPI electrophotographic printing plate makers, essentially laser printers that print on plastic sheets, are also available.

Laser printer maintenance

Most consumer and small business laser printers use a toner cartridge that combines the photoreceptor (sometimes called "photo conductor unit" or "imaging drum") with the toner supply bin, the waste toner hopper, and various wiper blades. When the toner supply is

consumed, replacing the toner cartridge automatically replaces the imaging drum, waste toner hopper, and wiper blades. Some laser printers maintain a page count of the number of pages printed since last maintenance. On these models, a reminder message will appear informing the user it is nearing time to replace standard maintenance parts. On other models, no page count is kept or no reminder is displayed, so the user must keep track of pages printed manually or watch for warning signs like paper feed problems and print defects. Some color laser printers, notably some Lexmark models[citation needed] run "calibration" cycles even when no printing has occurred for weeks. These are widely reported[by whom?] to waste a significant amount of toner from each reservoir, in addition to consuming electricity. This has a significant impact on printing economy, especially in lowvolume applications. On some models these calibration cycles can be disabled via a menu choice, for others the printer must be unplugged to avoid this waste. Printers that have this issue have a replaceable "waste toner bin", which is another periodic operating expense. Manufacturers usually provide life expectancy charts for common printer parts and consumables. Manufacturers rate life expectancy for their printer parts in terms of "expected page-production life" rather than in units of time. Consumables and maintenance parts for business-class printers will generally be rated for a higher page-production expectancy than parts for personal printers. In particular, toner cartridges and fusers usually have a higher page production expectancy in business-class printers than personal-class printers. Color laser printers can require more maintenance and parts replacement than monochrome laser printers since they contain more imaging components. For rollers and assemblies involved in the paper pickup path and paper feed path, typical maintenance is to vacuum toner and dust from the mechanisms, and replace, clean, or restore the rubber paper-handling rollers. Most pickup, feed, and separation rollers have a rubber coating which eventually suffers wear and becomes covered with slippery paper dust. In cases where replacement rollers are discontinued or unavailable, rubber rollers can be cleaned safely with a damp lint-free rag. Commercial chemical solutions are also available which may help temporarily restore the traction of the rubber.

Safety hazards, health risks, and precautions

Shock hazards

Although modern printers include many safety interlocks and protection circuits, it is possible for a high voltage or a residual voltage to be present on the various rollers, wires, and metal contacts inside a laser printer. Care should be taken to avoid unnecessary contact with these parts to reduce the potential for painful electrical shock.

Toner clean-up

Toner particles are designed to have electrostatic properties and can develop static-electric charges when they rub against other particles, objects, or the interiors of transport systems and vacuum hoses. Because of this and its small particle size, toner should not be vacuumed with a conventional home vacuum cleaner. Static discharge from charged toner particles can ignite dust in the vacuum cleaner bag or create a small explosion if sufficient toner is airborne. This may damage the vacuum cleaner or start a fire. In addition, toner particles are so fine that they are poorly filtered by conventional household vacuum cleaner filter bags and blow through the motor or back into the room. Toner particles melt (or fuse) when warmed. Small toner spills can be wiped up with a cold, damp cloth. If toner spills into the laser printer, a special type of vacuum cleaner with an electrically conductive hose and a high efficiency (HEPA) filter may be needed for effective cleaning. These are called ESD-safe (Electrostatic Discharge-safe) or toner vacuums. Similar HEPAfilter equipped vacuums should be used for clean-up of larger toner spills.

Ozone hazards

As a natural part of the printing process, the high voltages inside the printer can produce a corona discharge that generates a small amount of ionized oxygen and nitrogen, forming ozone and nitrogen oxides. In larger commercial printers and copiers, a carbon filter in the air exhaust stream breaks down these oxides to prevent pollution of the office environment.

Respiratory health risks

According to a recent study conducted in Queensland, Australia, some printers emit submicrometre particles which some suspect may be associated with respiratory diseases. Of 63 printers evaluated in the Queensland University of Technology study, 17 of the strongest emitters were made by Hewlett-Packard and one by Toshiba. The machine population studied, however, was only those machines already in place in the building and was thus biased toward specific manufacturers. The authors noted that particle emissions varied substantially even among the same model of machine. According to Professor Morawska of Queensland University, one printer emitted as many particles as a burning cigarette.

Image Scanner
Modern scanners may be considered the successors of early telephotography and fax input devices, consisting of a rotating drum with a single photo detector at a standard speed of 60 or 120 rpm (later models up to 240 rpm). They send a linear analog AM signal through standard telephone voice lines to receptors, which synchronously print the proportional intensity on special paper. This system was in use in press from the 1920s to the mid1990s. Color photos were sent as three separated RGB filtered images consecutively, but only for special events due to transmission costs.

Types

Drums

Drum scanners capture image information with photomultiplier tubes (PMT), rather than the charge-coupled device (CCD) arrays found in flatbed scanners and inexpensive film scanners. Reflective and transmissive originals are mounted on an acrylic cylinder, the scanner drum, which rotates at high speed while it passes the object being scanned in front of precision optics that deliver image information to the PMTs. Most modern color drum scanners use three matched PMTs, which read red, blue, and green light, respectively. Light from the original artwork is split into separate red, blue, and green beams in the optical bench of the scanner.

CCD Scanner

A flatbed scanner is usually composed of a glass pane (or platen), under which there is a bright light (often xenon or cold cathode fluorescent) which illuminates the pane, and a moving optical array in CCD scanning. CCD-type scanners typically contain three rows (arrays) of sensors with red, green, and blue filters.

CIS Scanner
CIS scanning consists of a moving set of red, green and blue LEDs strobes for illumination and a connected monochromatic photodiode array for light collection. Images to be scanned are placed face down on the glass, an opaque cover is lowered over it to exclude ambient light, and the sensor array and light source move across the pane, reading the entire area. An image is therefore visible to the detector only because of the light it reflects. Transparent images do not work in this way, and require special accessories that illuminate them from the upper side. Many scanners offer this as an option.

Computer connection

Scanning the document is only one part of the process. For the scanned image to be useful, it must be transferred from the scanner to an application running on the computer. There are two basic issues: (1) how the scanner is physically connected to the computer and (2) how the application retrieves the information from the scanner.

Light pen
A light pen is a computer input device in the form of a light-sensitive wand used in conjunction with a computer's CRT TV set or monitor. It allows the user to point to displayed objects, or draw on the screen, in a similar way to a touch screen but with greater positional accuracy. It was long thought that a light pen can work with any CRT-based display, but not with LCD screens (though Toshiba and Hitachi displayed a similar idea at the "Display 2006" show in Japan[1]), projectors and other display devices. However, in 2011 Fairlight Instruments released its Fairlight CMI-30A, which uses a 17" LCD monitor with light pen control.

Вам также может понравиться