<TABLE> <S> <C>
<PAGE>
<ARTICLE> 5
<LEGEND>
THIS SCHEDULE CONTAINS SUMMARY FINANCIAL INFORMATION EXTRACTED FROM THE
CONSOLIDATED BALANCE SHEETS AND CONSOLIDATED STATEMENT OF OPERATIONS FOUND ON
PAGES 1 AND 2 OF THE COMPANY'S FORM 10-Q FOR THE SIX MONTHS ENDED JUNE 30, 2000,
AND IS QUALIFIED IN ITS ENTIRETY BY REFERENCE TO SUCH FINANCIAL STATEMENTS.
</LEGEND>
<S> <C>
<PERIOD-TYPE> 6-MOS
<FISCAL-YEAR-END> DEC-31-1999
<PERIOD-END> JUN-30-2000
<CASH> 189,726
<SECURITIES> 0
<RECEIVABLES> 6,169,127
<ALLOWANCES> (388,455)
<INVENTORY> 5,937,478
<CURRENT-ASSETS> 13,791,566
<PP&E> 4,091,745
<DEPRECIATION> (3,121,870)
<TOTAL-ASSETS> 27,752,837
<CURRENT-LIABILITIES> 12,311,113
<BONDS> 0
0
9,810,000
<COMMON> 26,529,282
<OTHER-SE> (40,014,919)
<TOTAL-LIABILITY-AND-EQUITY> 27,752,837
<SALES> 22,807,338
<TOTAL-REVENUES> 22,907,754
<CGS> 9,402,230
<TOTAL-COSTS> 9,119,740
<OTHER-EXPENSES> 618,685
<LOSS-PROVISION> 0
<INTEREST-EXPENSE> 1,273,287
<INCOME-PRETAX> 2,493,812
<INCOME-TAX> 841,041
<INCOME-CONTINUING> 1,652,771
<DISCONTINUED> 0
<EXTRAORDINARY> 0
<CHANGES> 0
<NET-INCOME> 1,652,771
<EPS-BASIC> .15
<EPS-DILUTED> .04
</TABLE>