<TABLE> <S> <C>
<PAGE>
<ARTICLE> 5
<LEGEND>
THIS SCHEDULE CONTAINS SUMMARY FINANCIAL INFORMATION EXTRACTED FORM THE BALANCE
SHEETS AS OF JUNE 30, 2000 AND DECEMBER 31, 1999 AND THE STATEMENTS OF
OPERATIONS FOR THE SIX MONTHS ENDED JUNE 30, 2000 AND THE YEAR ENDED DECEMBER
31, 1999 AND IS QUALIFIED IN ITS ENTIRETY BY REFERENCE TO SUCH FINANCIAL
STATEMENTS.
</LEGEND>
<MULTIPLIER> 1,000
<S> <C> <C>
<PERIOD-TYPE> 6-MOS YEAR
<FISCAL-YEAR-END> DEC-31-2000 DEC-31-1999
<PERIOD-START> JAN-01-2000 JAN-01-1999
<PERIOD-END> JUN-30-2000 DEC-31-1999
<CASH> 1,510 2,087
<SECURITIES> 295 289
<RECEIVABLES> 3,559 3,329
<ALLOWANCES> 225 201
<INVENTORY> 1,799 1,253
<CURRENT-ASSETS> 7,195 6,897
<PP&E> 2,931 3,298
<DEPRECIATION> 1,592 2,021
<TOTAL-ASSETS> 9,059 8,699
<CURRENT-LIABILITIES> 3,336 3,083
<BONDS> 0 0
24,534 23,842
0 0
<COMMON> 1,824 278
<OTHER-SE> (20,635) (18,504)
<TOTAL-LIABILITY-AND-EQUITY> 9,059 8,699
<SALES> 11,009 19,783
<TOTAL-REVENUES> 11,009 19,783
<CGS> 3,908 6,624
<TOTAL-COSTS> 3,908 6,624
<OTHER-EXPENSES> 7,430 12,525
<LOSS-PROVISION> 24 63
<INTEREST-EXPENSE> (12) (20)
<INCOME-PRETAX> (317) 654
<INCOME-TAX> 0 10
<INCOME-CONTINUING> (317) 644
<DISCONTINUED> 0 0
<EXTRAORDINARY> 0 0
<CHANGES> 0 0
<NET-INCOME> (317) 644
<EPS-BASIC> (0.11) (0.17)
<EPS-DILUTED> (0.11) (0.17)
</TABLE>