pos机串口数据发送不了(pos机串口数据发送什么意思啊)

这篇文章的列表:

1、怎么把各地的POS机信息随时传入主机2、POS机有哪些通讯方式3、pos机显示状态码RD4、简述串行口接收和发送数据的过程5、串口发送与接收数据

如何将全国各地的POS信息随时传送给主机?

既然你说不要复制,那我就告诉你一个关键词“前置机”,你可以在百度搜一下。

一般都是用基于UNIX系统的服务器,至少在我们公司,是的,用的是IBM。

POS机一般通过拨号或其他通讯方式连接前置机。前置机将相关消息转发给相关的中心主机,然后中心返回信息。这是基本流程。

POS机的通讯方式有哪些?

多种通信方式有:TCP/IP、网络通信、无线、无线通信、GPRS、CDMA。Pos机分为:固定POS机:适合一体化改造项目的商户。无线pos机:适用于在客人住处收款的商户类型。

1.POS,即销售点信息管理系统,是一种装有条形码或OCR码技术的终端阅读器,具有现金或易货线收银功能。其主要任务是为商品和媒体交易提供数据服务和管理功能,并进行非现金结算。POS是一种多功能终端。它可以安装在信用卡的特约商户和受理网点,与电脑联网,实现电子资金的自动转账。具有支持消费、预授权、余额查询、转账等功能,使用安全、快捷、可靠。大宗交易很难获得基本的经营信息,引入POS系统主要是为了解决零售信息管理的盲区。连锁分店管理信息系统的重要组成部分。

二、POS系统的基本原理是先在电脑文件中创建商品数据,通过电脑收银机的联机结构,通过收银pos机上的光学读取装置直接读入商品上的条形码(也可以通过键盘直接输入代码),然后将商品信息(单价、部门、折扣…)可以立即显示,从而加快收银速度和正确性。每一笔商品销售的详细信息(价格、部门、时间段、客户级别)都被自动记录下来,然后由在线框架发回电脑。通过计算机计算和处理,可以生成各种销售统计分析信息,作为管理的依据。

第三,POS机通过刷卡器读取持卡人银行卡上的磁条信息,POS机操作员输入交易金额,持卡人输入个人身份信息(密码),POS机通过银联中心将这些信息发送到发卡行系统,完成网上交易,给出成功或失败的信息,并打印相应的账单。POS的办理实现了信用卡、借记卡等银行卡的网上消费,保证了交易的安全、快捷、准确,避免了人工查询黑名单、压单等繁琐劳动,提高了工作效率。

4.通信接口电路通常由RS232接口、PINPAD接口、IRDA接口和RS485接口电路组成。RS232接口通常是POS程序的下载口,PINPAD接口通常是主机与密码键盘的接口,IRDA接口通常是手机与座机的红外通信接口。接口信号通常由发送信号、接收信号和电源信号组成。

5.调制解调器板由中央处理模块、存储模块、调制解调器模块和电话线接口组成。首先,POS会检测/振铃和/电话信号,以确定电话线上的电压是否可以使用。交换机返回,可以拨号音,POS拨号,发送灯闪烁,拨号开始。通信协议确定交换机和POS之间的握手确认,然后开始POS的数据交换,通过MODEM电路发送和接收信号。完成后挂断,并结束该过程。

Pos显示状态代码RD

通信模块的rd是接收指示灯。

Sd是发送指示符。

当数据通过串口发送到plc时,rd灯闪烁。当plc通过串口发送数据时,sd灯闪烁。如果数据收发频率快,指示灯闪得快,观察几乎是一直开着的。读取信号时Rd闪烁,发送信号时sd闪烁。

[img]

简述通过串口收发数据的过程。

首先需要初始化串口,配置波特率,这个和时钟有很强的关系。

然后就可以发送和接收了,分为中断和轮询。

发送时,数据写入一个寄存器,mcu会自动将该寄存器的数据发送到发送缓冲区,mcu会通过tx线的编程电平自动发送缓冲区的数据。

接待也是如此。从外部发送的数据被自动转换成数字信号并存储在接收缓冲器中,并且第一数据被依次发送到接收寄存器。如果中断使能,将会有一个中断,接收寄存器的数据将在中断中被读取。

发送和接收数据的串行端口

使用RS-485串口进行通讯。

1.定义串口接收数据的缓冲区,最多可存储64字节u8 RS485 _ RX _ buf 1d3=0000 0000 0000 0000;

2.定义接收和发送数据的长度u8 RS485 _ RX _ CNT

3.发送数据一般有两个函数,printf和USART_SendData。这里主要说一下USART_SendData的使用。Printf实现格式化字符串,字符串有优势。

USART_SendData传递单个字符和指令。

4.为发送者定义标志位u32 flags _ send1标志_发送1

5.许多要发送的事件定义了一个枚举类型的数据,所有要发送的事件都放入枚举类型数据中。

枚举型数据将第一个设置为1,其他数据依次加1。

6.定义一个发送事件函数SendCmd(u8 cmd)

定义

7.假设要传递E_CKEYDN_INUSE1事件,要传递该事件,应该将该事件作为参数传递给SendCmd(u8 cmd)函数。

此时flags _ send 1 | = EBIT(9)=;第四点是flags_send1是一个32位无符号整数数据。所以flags _ send 1 = 0000 0000 0000 0000 0000 0001 1111。

8.(1)UARTSend1()函数

flags _ send 1 = 0000 0000 0000 0000 0000 0000 0001 1111;

sb[2]=(flags _ send 1 0)0x ff = 1111 1111;

sb[3]=(flags _ send 1 8)0x ff = 0000 0001;

sb[4]=(flags _ send 1 16)0x ff = 0000 0000;

sb[5]=(flags _ send 1 24)0x ff = 0000 0000;

(2)2)校验和()函数

d0 =(send data 0)0x ff = 0000 0001 1111 1111;

D1 =(send data 8)0x ff = 0000 0001 0x ff = 0000 0000 0000 0001;

D2 =(send data 16)0x ff = 0000 0000 0x ff = 0000 0000 0000 0000 0000;

D3 =(send data 24)0x ff = 0000 0000 0x ff = 0000 0000 0000 0000;

sum = 0000 0010 0000 0000

~ sum = 1111 1101 1111 1111

sb[6]=(sum 0)0x ff = 1111 1111 0x ff = 1111 1111;

sb[7]=(sum 8)0x ff = 1111 1101;

(3)

为什么要将sb[8]的前两位定义为0x55和0xaa?

0xaa是1010 1010,0x55是0101 0101。在通信编码原理中,要避免过多重复0或1,因为当传输变成很长的0/1时,一个脉冲干扰就会截断数据,增加误码的概率。如果通信员不能接受10101010或者01010101,那么就是线路有问题。这是判断线路状态的一种手段。

9.串行端口1接收数据。

(1)由UARTRead1()函数实现。

receive+=(RS485 _ RX _ buf 1[2]0)= 0000 0000 0000 0000 0000 1111 1111;;

receive+=(RS485 _ RX _ buf 1[3]8)= 0000 0000 0000 0000 0001 1111 1111

receive+=(RS485 _ RX _ buf 1[4]16)= 0000 0000 0000 0000 0001 1111 1111

receive+=(RS485 _ RX _ buf 1[5]24)= 0000 0000 0000 0000 0001 1111 1111

(2)将receive传递给校验和(u32 senddata)函数。

d0 = 0000 0000 1111 1111

d1=0000 0000 0000 0001

d2= 0000 0000 0000 0000

[64]

总和=0000 0001 0000 0000

~sum = 1111 1110 1111 1111

(3)将接收数据的标志位定义为u32 flags _ receive1

通过判断RS485_RX_BUF1[6]和RS485_RX_BUF1是否等于((sum 0) 0xff)和((sum 8) 0xff)),可以判断读取的数据是否正确。

RS485_RX_BUF2[6] ==1111 1111

RS485_RX_BUF2[7] == 1111 1110

准确的时间

接收到的数据是flags _ receive 1 = receive = 0000 0000 0000 0001 1111;

Flags_receive1 |=不正确时的EBIT(E _ ERROR);接收数据标志的位置是错误位。

相关推荐

原创文章,作者:POS机办理中心,如若转载,请注明出处:https://www.lkalpos.com/zszx/172532.html

(0)
上一篇 2023-08-21 08:35:15
下一篇 2023-08-21 08:39:30