资源简介

此项目用于安卓小票打印驱动。(稳定版)已用于实际项目 支持: USB转串口线、纯串口阵脚打印线、纯USB打印线、Cp21xx、USB CDC/ACM serial、FTDI Serial 项目说明: android_serialport_api 纯串口阵脚线通信,检测设备,读写串口等工具 com.hoho.android.usbserial 其他辅助测试类. 可以忽略 com.hoho.android.usbserial.driver 各种USB规格的驱动,可自行扩展。 FtdiSerialDriver.java(USB转串口线驱动),UsbPrinterDriver.java(纯USB打印线驱动),目前使用到这两个驱动。 com.hoho.android.usbserial.escpos 爱普生的 esc/pos 标准指令, 打印指令类。 com.hoho.android.usbserial.util 一些转换16进制工具类 net.pragmaware.pegasus.notetaker 采用JNI操作USB读写进行通信,这只另一种是先打印通信方式。 核心类 入口: 用于检测设备与打印机通信 纯串口阵脚线打印:使用SerialPortFinder.java 检测出设备,即可进行打印指令发送。 USB转串口 , 包括纯USB打印线:UsbSerialProber.java 检测出设备,即可进行打印指令发送。 以上是串口或USB线 设备检测 用于打印指令控制,输出打印结果 打印指令类:UsbComPrinter.java 使用这个类,即可进行打印操作。 最终流程: 1.检测出可用设备 2.输入打印内容 3.打印指令发送至设备 4.输出打印结果

资源截图

代码片段和文件信息

/*
 * Copyright 2009-2011 Cedric Priscal
 *
 * Licensed under the Apache License Version 2.0 (the “License“);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing software
 * distributed under the License is distributed on an “AS IS“ BASIS
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include “SerialPort.h“

#include “android/log.h“
static const char *TAG = “serial_port“;
#define LOGI(fmt args...) __android_log_print(ANDROID_LOG_INFO  TAG fmt ##args)
#define LOGD(fmt args...) __android_log_print(ANDROID_LOG_DEBUG TAG fmt ##args)
#define LOGE(fmt args...) __android_log_print(ANDROID_LOG_ERROR TAG fmt ##args)

static speed_t getBaudrate(jint baudrate) {
switch (baudrate) {
case 0:
return B0;
case 50:
return B50;
case 75:
return B75;
case 110:
return B110;
case 134:
return B134;
case 150:
return B150;
case 200:
return B200;
case 300:
return B300;
case 600:
return B600;
case 1200:
return B1200;
case 1800:
return B1800;
case 2400:
return B2400;
case 4800:
return B4800;
case 9600:
return B9600;
case 19200:
return B19200;
case 38400:
return B38400;
case 57600:
return B57600;
case 115200:
return B115200;
case 230400:
return B230400;
case 460800:
return B460800;
case 500000:
return B500000;
case 576000:
return B576000;
case 921600:
return B921600;
case 1000000:
return B1000000;
case 1152000:
return B1152000;
case 1500000:
return B1500000;
case 2000000:
return B2000000;
case 2500000:
return B2500000;
case 3000000:
return B3000000;
case 3500000:
return B3500000;
case 4000000:
return B4000000;
default:
return -1;
}
}

/*
 * Class:     android_serialport_SerialPort
 * Method:    open
 * Signature: (Ljava/lang/String;II)Ljava/io/FileDescriptor;
 */
JNIEXPORT jobject JNICALL Java_android_1serialport_1api_SerialPort_open(
JNIEnv *env jclass thiz jstring path jint baudrate jint flags
jint dataBits jint stopBits jint parity) {
int fd;
speed_t speed;
jint mDataBits mStopBits mParity;
jobject mFileDescriptor;

/* Check arguments */
{
speed = getBaudrate(baudrate);
if (speed == -1) {
/* TODO: throw an exception */
LOGE(“Invalid baudrate :%d“ baudrate);
return NULL;
}
}

/* Opening device */
{
jboolean iscopy;
const char *path_utf = (*env)->GetStringUTFChars(env path &iscopy);
LOGD(“testpath %s“ path_utf);

LOGD(“Opening serial port %s with flags 0x%x“ path_utf
O_RDWR | flags);
//  参数-- O_NOCTTY:通知linux系统,这个程序不会成为这个端口的控制终端.
//        O_NDELAY:通知linux系统不关心

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         475  2016-10-14 10:01  usbSerialForAndroid\.classpath
     文件        3769  2016-10-14 10:01  usbSerialForAndroid\.cproject
     目录           0  2016-10-14 10:01  usbSerialForAndroid\.externalToolBuilders\
     文件         663  2016-10-14 10:01  usbSerialForAndroid\.externalToolBuilders\NDK-Build [Builder] (4).launch
     文件        1821  2016-10-14 10:01  usbSerialForAndroid\.project
     文件         270  2016-10-14 10:01  usbSerialForAndroid\AndroidManifest.xml
     目录           0  2016-10-14 10:01  usbSerialForAndroid\assets\
     目录           0  2016-10-14 10:01  usbSerialForAndroid\bin\
     目录           0  2016-10-14 10:01  usbSerialForAndroid\bin\classes\
     目录           0  2016-10-14 10:01  usbSerialForAndroid\gen\
     文件       51394  2016-10-14 10:01  usbSerialForAndroid\ic_launcher-web.png
     目录           0  2016-10-14 10:01  usbSerialForAndroid\jni\
     文件         864  2016-10-14 10:01  usbSerialForAndroid\jni\Android.mk
     文件         171  2016-10-14 10:01  usbSerialForAndroid\jni\Application.mk
     文件          90  2016-10-14 10:01  usbSerialForAndroid\jni\gen_SerialPort_h.sh
     文件        5993  2016-10-14 10:01  usbSerialForAndroid\jni\SerialPort.c
     文件         795  2016-10-14 10:01  usbSerialForAndroid\jni\SerialPort.h
     目录           0  2016-10-14 10:01  usbSerialForAndroid\jni\usbread\
     文件        1045  2016-10-14 10:01  usbSerialForAndroid\jni\usbread\Android.mk
     文件        6423  2016-10-14 10:01  usbSerialForAndroid\jni\usbread\net_pragmaware_pegasus_notetaker_PenDeviceUsbNativeHelper.c
     文件        1685  2016-10-14 10:01  usbSerialForAndroid\jni\usbread\net_pragmaware_pegasus_notetaker_PenDeviceUsbNativeHelper.h
     文件          18  2016-10-14 10:01  usbSerialForAndroid\jni\usbSerialForAndroid.cpp
     目录           0  2016-10-14 10:01  usbSerialForAndroid\libs\
     文件      621451  2016-10-14 10:01  usbSerialForAndroid\libs\android-support-v4.jar
     目录           0  2016-10-14 10:01  usbSerialForAndroid\libs\armeabi\
     目录           0  2016-10-14 10:01  usbSerialForAndroid\libs\armeabi-v7a\
     文件      383846  2016-10-14 10:01  usbSerialForAndroid\libs\bsh-2.0b5.jar
     文件       13034  2016-10-14 10:01  usbSerialForAndroid\libs\posindev.jar
     目录           0  2016-10-14 10:01  usbSerialForAndroid\libs\x86\
     文件          53  2016-10-14 10:01  usbSerialForAndroid\lint.xml
     目录           0  2016-10-14 10:01  usbSerialForAndroid\obj\
............此处省略86个文件信息

评论

共有 条评论