完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境:
64b,myeclipse8.5,rxtx开发STC,keil,格西烽火,51,rs232USB转串口线。 下位机c代码 #include 《reg51.h》 #include 《string.h》 # define INBUF_LEN 7 //数据长度 unsigned char inbuf1[INBUF_LEN]; 无符号字符校验和,count3,count=0; 位 read_flag=0; 无符号字符 com[; void init_serialcomm(void) { TMOD=0x20;//设置定时器1为模式2 TH1=0xfd;//装初值设置波特率 TL1=0xfd; TR1=1;//启动定时器 SM0=0;//串口通信模式设置 SM1=1; } void delay_1s() //1s { unsigned int i; for(i=0;i《45000;i++) { } } void delay_1us() //1s { unsigned int i; for(i=0;i《45;i++) { } } //向串口发送一个 字符void send_char_com(char ch) { SBUF=ch; 同时(TI==0); TI=0; delay_1us(); } //向串口发送一个字符串,strlen为该字符串长度 void send_string_com(char *str,int strlen) { int k=0; 做 { send_char_com(*(str + k)); k++; } while(k 《 strlen); } //串口接收中断函数 void serial()中断4使用3 { if(RI) { unsigned char ch1; RI = 0; ch1=SBUF; inbuf1[count++]=ch1; if(count==INBUF_LEN) { read_flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验正确, count=0; //就置位取数标志 } } } main() { init_serialcomm(); //初始化 串口delay_1s(); send_string_com(“10.7”,4); 返回 1; } 上位机java代码 import gnu.io.CommPort; 导入 gnu.io.CommPortIdentifier; 导入 gnu.io.SerialPort; 导入 java.io.FileDescriptor; 导入 java.io.IOException; 导入 java.io.InputStream; 导入 java.io.OutputStream; 导入 java.sql.*; 公共类 TwoWaySerialComm { public TwoWaySerialComm() { super(); } void connect (String portName) 抛出异常 { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); if ( portIdentifier.isCurrentlyOwned() ) { System.out.println(“错误:端口正在使用中”); } 其他 { CommPort commPort = portIdentifier.open(this.getClass().getName(),2000); if ( commPort instanceof SerialPort ) { SerialPort serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); InputStream in = serialPort.getInputStream(); OutputStream out = serialPort.getOutputStream(); (new Thread(new SerialReader(in))).start(); (new Thread(new SerialWriter(out))).start(); } 其他 { System.out.println(“错误:本例只处理串口。”); } } } /** */ 公共静态类SerialReader实现Runnable { InputStream in; public SerialReader ( InputStream in ) { this.in = in; } public void run() { byte[] buffer = new byte[1024]; int len = -1; 字符串com_ge; DBInsert DI=new DBInsert(); 试试 { while ( ( len = this.in.read(buffer)) 》 -1 ) { //加上 10 秒 try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } //com_get保存串口数据 com_get=new String(buffer,0,2); System.out.print(com_get); } } catch ( IOException e ) { e.printStackTrace(); } } } /** */ 公共静态类 SerialWriter 实现 Runnable { OutputStream out; public SerialWriter (OutputStream out) { this.out = out; } public void run() { try { int c = 0; while ( ( c = System.in.read()) 》 -1 ) { this.out.write(c); } } catch ( IOException e ) { e.printStackTrace(); } } } public static void main (String[] args) { try { (new TwoWaySerialComm()).connect(“COM3”); } catch ( Exception e ) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } } } } 出现的问题 获取到乱码 可能是没有 打开 可能的开关按钮提示打开方法错误可能是没有格子烽火或者我的日食,看到同时不能打开。 提示找不到指纹 检查下你的STC和代码,看是否端口正确。 |
|
|
|
只有小组成员才能发言,加入小组>>
2519 浏览 0 评论
1101浏览 2评论
712浏览 1评论
465浏览 0评论
208浏览 0评论
352浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 13:19 , Processed in 1.150695 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号