- 浏览: 251927 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
这个是一个JAVA代码的解决方案,但我测试后发现读不到数据,不知道那里有问题,现在还没有解决。
package com;
/*
程序文件名称:ReadComm.java
功能:从串行口COM1中接收数据
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.comm.*;
class R_Frame extends Frame implements Runnable,ActionListener,SerialPortEventListener
{
/* 检测系统中可用的通讯端口类 */
static CommPortIdentifier portId;
/* Enumeration 为枚举型类,在java.util中 */
static Enumeration portList;
InputStream inputStream;
/* 声明RS-232串行端口的成员变量 */
SerialPort serialPort;
Thread readThread;
String str="";
TextField out_message=new TextField("上面文本框显示接收到的数据");
TextArea in_message=new TextArea();
Button btnOpen=new Button("打开串口");
/*建立窗体*/
R_Frame()
{
super("串口接收数据");
setSize(200,200);
setVisible(true);
btnOpen.addActionListener(this);
add(out_message,"South");
add(in_message,"Center");
add(btnOpen,"North");
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
out_message.setText("已打开端口COM1 ,正在接收数据..... ");
}
catch (PortInUseException e) { }
/*设置串口监听器*/
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e) { }
/* 侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
} //if end
} //if end
} //while end
readThread = new Thread(this);
readThread.start(); //线程负责每接收一次数据休眠20秒钟
} //R_Frame() end
/*点击按扭所触发的事件:打开串口,并监听串口. */
public void actionPerformed(ActionEvent event)
{
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
out_message.setText("已打开端口COM1 ,正在接收数据..... ");
}
catch (PortInUseException e) { }
/*设置串口监听器*/
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e) { }
/* 侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
} //if end
} //if end
} //while end
readThread = new Thread(this);
readThread.start(); //线程负责每接收一次数据休眠20秒钟
} //actionPerformed() end
/*接收数据后休眠20秒钟*/
public void run() {
try {
Thread.sleep(20000);
}
catch (InterruptedException e) { }
} //run() end
/*串口监听器触发的事件,设置串口通讯参数,读取数据并写到文本区中*/
public void serialEvent(SerialPortEvent event) {
/*设置串口通讯参数:波特率、数据位、停止位、奇偶校验*/
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e) {}
byte[] readBuffer = new byte[20];
try {
inputStream = serialPort.getInputStream();
}
catch (IOException e){
}
try {
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
} //while end
str=new String(readBuffer);
/*接收到的数据存放到文本区中*/
in_message.append(str+"\n");
}
catch (IOException e){
}
} //serialEvent() end
} //类R_Frame end
public class ReadComm
{
public static void main(String args[])
{
/* 实例化接收串口数据的窗体类 */
R_Frame R_win=new R_Frame();
/* 定义窗体适配器的关闭按钮功能 */
R_win.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
R_win.pack();
}
}
/*
程序文件名称:ReadComm.java
功能:从串行口COM1中接收数据
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.comm.*;
class R_Frame extends Frame implements Runnable,ActionListener,SerialPortEventListener
{
/* 检测系统中可用的通讯端口类 */
static CommPortIdentifier portId;
/* Enumeration 为枚举型类,在java.util中 */
static Enumeration portList;
InputStream inputStream;
/* 声明RS-232串行端口的成员变量 */
SerialPort serialPort;
Thread readThread;
String str="";
TextField out_message=new TextField("上面文本框显示接收到的数据");
TextArea in_message=new TextArea();
Button btnOpen=new Button("打开串口");
/*建立窗体*/
R_Frame()
{
super("串口接收数据");
setSize(200,200);
setVisible(true);
btnOpen.addActionListener(this);
add(out_message,"South");
add(in_message,"Center");
add(btnOpen,"North");
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
out_message.setText("已打开端口COM1 ,正在接收数据..... ");
}
catch (PortInUseException e) { }
/*设置串口监听器*/
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e) { }
/* 侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
} //if end
} //if end
} //while end
readThread = new Thread(this);
readThread.start(); //线程负责每接收一次数据休眠20秒钟
} //R_Frame() end
/*点击按扭所触发的事件:打开串口,并监听串口. */
public void actionPerformed(ActionEvent event)
{
/*获取系统中所有的通讯端口 */
portList=CommPortIdentifier.getPortIdentifiers();
/* 用循环结构找出串口 */
while (portList.hasMoreElements()){
/*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
out_message.setText("已打开端口COM1 ,正在接收数据..... ");
}
catch (PortInUseException e) { }
/*设置串口监听器*/
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e) { }
/* 侦听到串口有数据,触发串口事件*/
serialPort.notifyOnDataAvailable(true);
} //if end
} //if end
} //while end
readThread = new Thread(this);
readThread.start(); //线程负责每接收一次数据休眠20秒钟
} //actionPerformed() end
/*接收数据后休眠20秒钟*/
public void run() {
try {
Thread.sleep(20000);
}
catch (InterruptedException e) { }
} //run() end
/*串口监听器触发的事件,设置串口通讯参数,读取数据并写到文本区中*/
public void serialEvent(SerialPortEvent event) {
/*设置串口通讯参数:波特率、数据位、停止位、奇偶校验*/
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e) {}
byte[] readBuffer = new byte[20];
try {
inputStream = serialPort.getInputStream();
}
catch (IOException e){
}
try {
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
} //while end
str=new String(readBuffer);
/*接收到的数据存放到文本区中*/
in_message.append(str+"\n");
}
catch (IOException e){
}
} //serialEvent() end
} //类R_Frame end
public class ReadComm
{
public static void main(String args[])
{
/* 实例化接收串口数据的窗体类 */
R_Frame R_win=new R_Frame();
/* 定义窗体适配器的关闭按钮功能 */
R_win.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
R_win.pack();
}
}
这个是在web页面上的实现,修改了下现在可以读到数据,但这个需要注册MSCOMM组件,还算比较理想吧!
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JavaScript MSCOMM32.OCX </title>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
//重写 mscomm 控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("请读条码");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}
}
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
// MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
MSComm1_OnComm()
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
//打开端口并发送命令程序
function OpenPort()
{
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="R";//发送命令
//window.alert("成功发出命令!");
}
else
{
window.alert ("已经开始接收数据!");
}
}
</script>
</head>
<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject"
style="LEFT: 54px; TOP: 14px" >
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="?">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>
<form name="form1">
<input type="button" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" size=50 value="">
</form>
</body>
</html>
<html>
<head>
<title>JavaScript MSCOMM32.OCX </title>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
//重写 mscomm 控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("请读条码");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}
}
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
// MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
MSComm1_OnComm()
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
//打开端口并发送命令程序
function OpenPort()
{
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="R";//发送命令
//window.alert("成功发出命令!");
}
else
{
window.alert ("已经开始接收数据!");
}
}
</script>
</head>
<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject"
style="LEFT: 54px; TOP: 14px" >
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="?">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>
<form name="form1">
<input type="button" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" size=50 value="">
</form>
</body>
</html>
发表评论
-
java reflect ajax json tool
2008-06-13 18:04 646<!--<br /> <br /> ... -
AspectJ 学习
2008-06-28 15:08 853参照:王海龙 (buaawhl@sina.com)的 What ... -
SimpleTrigger
2008-08-17 00:35 626package hvp.spring.quartz.simp ... -
CronTriggerRunner
2008-08-17 22:12 770package hvp.spring.quartz.simp ... -
FCKedtor 自动增加代码
2008-08-20 16:14 683FCKeditor是一套开源的优秀的在线网页编辑器. 下面简述 ... -
eclipse开发c程序
2008-09-30 20:21 1273http://www.stlchina.org/twiki/b ... -
log4j 例子
2008-10-06 21:06 677#Created by Huyvanpull - http:/ ... -
eclips link 安装插件的另一种方法
2008-10-06 21:08 6801.在myeclips根目录下放置插件site-1.2.4.它 ... -
xdoclet 的一些技巧
2008-10-06 21:36 6451.建立userLibraries.进入java build ... -
JAVA 相关 官方网站
2008-10-09 20:15 818java http://java.sun.com str ... -
今天出的一套面试题
2009-01-07 16:21 632JAVASCRIPT: 浏览器窗口A中有一个文件框a和一个按钮 ... -
log4j 的又一点体会
2009-02-12 14:32 502log4j.rootLogger=debug,stdout,f ... -
开发规范
2009-11-03 14:51 773一、总体要求 1、必须严格执行本规范以确保源代码 ... -
java 读取 excel 2003 或 excel 2007
2010-01-20 18:25 748package com.common.website.u ...
相关推荐
在Java编程环境中,生成条形码和二维码是常见的需求,特别是在数据交换、商品追溯和信息存储等领域。要实现在Java中生成这些编码,通常需要引入特定的库或框架。在这个场景中,我们关注的是两个关键的Java库:QRCode...
- 如果上述方法不能满足需求,还可以考虑使用第三方库,如ZXing(Zebra Crossing)库,它提供了强大的条码和二维码处理功能,包括解码和生成。虽然直接使用ZXing可能无法直接监听扫码枪的输入,但它可以帮助你在...
1. 图像处理:条形码通常通过扫描仪或摄像头捕获图像,然后进行解析。Java的`java.awt.image`包提供了图像处理的功能,例如`BufferedImage`类可以用于读取和操作图像。 2. 条形码解码算法:解码算法是将条形码图像...
1. **图像捕获**:使用扫描仪或摄像头捕获条码的图像。 2. **预处理**:调整图像,例如去除噪声,增强对比度,以便于后续分析。 3. **条码定位**:通过检测条和空的边缘来找到条码的位置和方向。 4. **条码解码**:...
安装驱动后,用户可以通过标准的打印接口(如Windows的“打印机和扫描仪”设置)来设置和管理打印机,无需直接操作串口指令。 在压缩包中的"tsclib"可能是一个库文件,包含了实现佳博打印机串口通信的函数和类。...
:当应用程序请求时,它加载其他两个库,开始图像捕获,将图像流传递给条形码扫描仪。 找到的任何条形码都将发送回应用程序。 fast-barcode-scanner-demo.apk :简单的演示应用程序,显示正在运行的代码。 IOS: ...
二维码(Quick Response Code)是日本最早为汽车行业设计的一种矩阵条码(或二维条码)的商标。 条形码是一种机器可读的光学标签,其中包含有关其所附物品的信息。 二维码使用四种标准化编码模式(数字、字母数字、...
通过光学设备(如扫描仪)读取条码,将其转换为电信号,然后通过解码算法转化为可理解的数据。 2. **二维码识别**:二维码比传统条码能存储更多信息,包括文本、网址、联系人信息等。二维码识别过程类似,但需要更...
Android条码和QR码扫描仪(通过Intent扫描) 这是使用Android Studio在android中创建条形码和Qr扫描仪的最简单方法。 使用该应用程序-https 。 在此应用程序中,我们将使用ZXing(斑马线)库在Android应用程序中...
介绍 基于 ZXing 库提供易于使用和可扩展的条码扫描仪视图的 Android APK。 学分 这些库项目的几乎所有代码都基于: 来自 Android SDK APIDemos 的 CameraPreview 应用程序 ZXing Android 库: :
ZXing或“ Zebra Crossing”是一种开放源代码的多格式1D / 2D条码图像处理库,已用Java实现,并且还带有其他语言的端口。 它当前支持以下格式:UPC-A和UPC-E EAN-8和EAN-13代码39代码93代码128 ITF Codabar RSS-14...
1. 条码扫描:使用条码阅读器(如激光扫描仪或摄像头)捕获条码图像。 2. 图像处理:阅读器将捕获的图像转换为数字信号,去除背景噪声,并识别条码的黑白条和空。 3. 解码:根据条码的编码规则,将条码的黑白模式...
可以通过更改“CameraManager.java”中的“MAX_FRAME_WIDTH”和“MAX_FRAME_HEIGHT”(第 44 和 45 行)来增加取景器(裁剪)区域。 CameraManager.java 可以在以下位置找到: yourproject/plugins/...
辅助生成条码可能包括选择合适的条码类型(如EAN、UPC、Code 128等)、设计条码布局、以及确保生成的条码符合打印和扫描的标准。 在提供的“字符串转化.vi”文件中,我们可能看到的是LabVIEW(Laboratory Virtual ...
【Szan:QR扫描仪】是一款基于Java技术开发的二维码扫描工具。在当前数字化时代,二维码已经成为信息传递的重要载体,Szan项目旨在提供一个简单易用、高效稳定的二维码扫描解决方案。这款扫描仪能够快速识别并解析...
良田S330D金融高拍仪还搭载了世界领先的OCR文件识别技术,能够自动分析版面,识别180多种文字、表格、条码、C++和java等形式语言以及特殊符号等,识别率高达98%,支持多语言、符号和数字的混排识别,识别结果保持与...
2. QR码解码库:为了解析二维码,Java开发者通常会使用第三方库,如Zxing(ZXing,意为“zebra crossing”,斑马线),这是一个开源的条码解码框架,支持多种条码格式,包括QR码。使用Zxing,开发者可以调用`...
zxing.java源码解析 delphi-examples 有一个定时器刷补间动画tween hook api 、 com 接口和 delphi 对象方法 属性表控件 32 位位图 数据结构和事件系统 点九图 用于生成不同 delphi 版本的组件包 使用 ...
亚历山大利亚(Alexandria)是一款专为Android平台设计的图书扫描仪与ISBN阅读器应用程序。这个项目主要利用Java编程语言实现,为用户提供了一种便捷的方式,以数字化他们的图书收藏并管理书籍信息。通过集成ISBN...
该库允许您将条码扫描仪作为片段嵌入。 大部分代码取自官方,这基本上是CaptureActivity.java的重新实现。 这也受到另一个类似库的启发, 。 警告 我目前正在更新这个库,我已经将原始 ZXing 源更新到最新版本,...