网络应用程序需要与串口通信
我正在编写一个需要访问串行端口的应用程序(这是信用卡读取器).我希望能够读写到端口.以下内容似乎可以让我做到这一点:对我有更好的解决方案吗?如果解决方案在多个平台上工作,而不仅仅是Windows. 我正在使用php. 解决方案 该设备是否效仿键盘?您最好让用户将光标定位在文本框中(或将光标以编程方式放置在那里)并在刷卡中,如果是这样. 我花了很多时间在C中为c usb/hid Support 内核可以识别设备,希望您要获得的设备也有类似的东西. 另外,Windows具有USB/HID的自身变体,因此"将其视为键盘"解决方案几乎可以使用这种方式.
0 2023-06-01
编程技术问答社区
php串行,怪异的波特率
我正在尝试使用PHP将文本发送到LED符号,以便我可以向其发送支持票号.标志本身是一件工作.它来自eBay,几乎没有文档制作不佳.摆弄了一段时间后,我能够弄清楚它的期望将其发送到它的方式,并且波特率为28800.我已经知道如何使用PHP与这样的东西进行交流,但是我不知道知道如何将波特率更改为非标准.我已经尝试了其他波特率,但无法使其工作. 解决方案 您可能需要查看Linux中的setSerial命令 - 使用它,您可以分配一个串行端口以具有非标准率. 如果您在连接以初始化端口之前(在服务器init脚本或您的PHP中)进行以下操作,则应该能够将其删除. /bin/setserial /dev/ttyS1 spd_cust baud_base 115200 divisor 4 这是命令中发生的事情: SPD_CUST选项告诉OS在应用程序请求38400时将速度设置为自定义除数. /dev/ttys1是串行端口.您会将其更改为任何内容. baud_base是
0 2023-05-31
编程技术问答社区
读取PHP中的com(串行调制解调器)
php 中的读取com(串行调制解调器) 我需要一个com接口(Windows,com2)才能使用php. 阅读 这个演示正在进行. 阅读是一个问题,有时正在运行. 是否有其他方式(没有dio,没有C ++)也许w32api_register_function()更好? function rs232init($com,$bautrate) { `mode $com: BAUD=$bautrate PARITY=N data=8 stop=1 xon=off`; } function send($comport,$char) { $fp = fopen ("$comport", "w+"); if (!$fp) { echo "not open for read"; } else {
0 2023-05-31
编程技术问答社区
php在linux上从串口读取数据
我尝试使用php读取Linux平台上的串行端口. 但是我无法阅读任何数据.当我尝试使用.net阅读时,这次我可以阅读. 我将" php_serial.class.php"类用于串行端口操作.您可以从此链接中阅读此类: 在这里 我的代码就是这样: deviceSet("/dev/ttyS1"); // We can change the baud rate, parity, length, sto
2 2023-05-29
编程技术问答社区
在php中打开com端口
我有一个USB 3G调制解调器华为E1550和Windows XP. 我想通过此调制解调器php发送短信. 我使用此功能打开调制解调器com端口: $fp = fopen ("COM3:", "wb+"); if (!$fp) { echo "Not open"; } else { echo "Open"; } 每当我遇到错误时: 警告:fopen(com3 :) [function.fopen]:无法打开流:d:\ apache \ htdocs \ z91.ru \ audio \ audio \ audio \ test.php in 3 解决方案 您也可以尝试删除comn旁边的结肠以工作 exec("mode COM3 BAUD=9600 PARITY=N data=8 stop=1 xon=off"); $fp = fopen ("COM3", "w"); if (!$fp) { echo "Not open"; }
0 2023-05-28
编程技术问答社区
我怎样才能将数据从一个网页发送到一个串行端口?
我有一个包括基本内容的网页.我可以偶然它的格式,但现在是PHP.我想将此数据发送到计算机的串行端口之一(作为PHP页面的访问者). 我需要一个代码将这些数据从Internet传输到其中一个串行端口.它可以是C ++,JavaScript,C#或其他任何内容. 我正在使用Windows(作为网页的访问者).因此,我需要将数据发送到访问者计算机而不是服务器的串行端口.不需要阅读. 哪个程序和过程是正确执行此操作的最佳选择?我需要它们工作正常的示例代码零件! 解决方案 有一个用于php的库,支持写入串行端口. 请参阅更多: 请参阅此问题以进行更多讨论: 像这个QBASIC程序 更新: 要在Windows上执行此操作,请参阅本教程: 此外,此问题: serial comm windows上的php
0 2023-05-27
编程技术问答社区
在Windows上用PHP进行串行通信
我正在寻找一种与Windows上RS232串行COM端口通信的方法.我在网上找到了2种解决方案,一个不是完全免费的(引入刻意的延误)在功能上)和另一个 windows的功能有限.后者只能写入Windows上的COM端口,而不阅读. 我无法查看第一个解决方案的代码,因为它已编译为.dll(否则,人们只能编辑延迟而不购买...),第二个似乎只使用了fopen()打开端口,然后向其打开fwrite()供书写,就像一个人对流一样.但是显然磨碎的东西什么也没返回. 我知道这是可能的,因为第一个解决方案确实需要Apache使用PHP-CGI模块而不是PHP5MODULE. 有什么想法? 解决方案 上面的每个解决方案效率低下或工作过多. 您只需使用 php-dio库(dio_fcntl,dio_fcntl,dio_open,dio_open, dio_read,dio_write,dio_seek,...).它也在 php手册的Dio : 的条目 默认情况下此PEC
0 2023-05-26
编程技术问答社区
从Arduino返回的PHP串口数据
我想知道是否有一种方法可以完成通过PHP阅读我的串行端口 - 可行的方法: - ) 在练习我的Arduino技能时,我开发了一个简单的LED ON/OFF素描.它通过在串行监视器中输入或 Off 来起作用. 下一步,我整理了一个网页,以充当GUI接口,单击链接并执行上方和关闭功能.此Webbased GUI通过PHP起作用. 我正在使用 php serial "> php serial 类别与serial port与serial port ersial port My arduino使用. 问题是我需要找到一种从串行端口获得反馈的方法.使用Arduino IDE串行监视器,我可以看到我的打印消息,以响应我的每个串行输入,并且需要在PHP代码中检索相同的反馈. PHP串行类提供 ReadPort()功能,但我不返回数据. 更新[2]: arduino: const int greenPin = 2; const int bluePin = 3; c
0 2023-05-26
编程技术问答社区
来电显示检测。不适用于某些电话
我正在使用以下方法来检测呼叫者ID时. 在表单加载上我设置以下代码: this.serialPort1.PortName = "COM3"; this.serialPort1.BaudRate = 9600; this.serialPort1.DataBits = 8; this.serialPort1.RtsEnable = true; this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); this.serialPort1.Open(); this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine); void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
0 2023-05-25
编程技术问答社区
在应用程序被 "root "运行后,QSerialPort无法打开tty。
i有一个从串行端口读取和写入的应用程序(使用QSerialPort).当我以root用户的方式运行此应用程序时,然后再次以非root用户运行,我将不再能够写入串行端口,收到以下错误: QIODevice::write (QSerialPort): device not open 非root用户位于dialout组中,/dev/tty**文件上的权限似乎没有变化: crw-rw---T 1 root dialout ...... 最奇怪的是,当我简单地使用shell作为非root用户写入文件时,我会出现错误 $> echo "foo bar baz" >> /dev/ttyS0 $> echo $? 0 我发现唯一可以解决该问题的东西是重新启动机器. 这里可能会发生什么? 我在Debian 7. 解决方案 更新:这是QT中的一个错误,将在版本5.6.2中修复,该版本将于本月晚些时候发布. 在Linux和Mac上,QSerialPort打开
4 2023-05-25
编程技术问答社区
我需要什么ASP.NET权限来访问一个串行端口?
我正在处理ASP.NET应用程序,我希望它通过串行端口与Arduino板进行通信.我创建了一个可以执行此操作并起作用的Windows应用程序,但是当我在ASP.NET应用程序上使用相同的代码时,我会得到一个例外,上面说"访问端口COM7被拒绝".现在,我一直在向网上浏览一个答案,我遇到了一个论坛,他们在谈论通过使用模仿来授予ASP.NET的许可.我在使用.NET框架和串行端口方面非常新.如果有人可以提供帮助,请执行或发布可能会有所帮助的链接. thanx提前. 解决方案 ASP.NET在计算机上使用特定的用户帐户.就像您登录的主要帐户一样.该用户帐户无权使用硬件做任何事情. 要模拟ASP.NET中的另一个帐户,您要执行以下操作: 创建一个具有与Web用户相同权限的帐户,然后在Web.config文件中添加以下代码.
0 2023-05-25
编程技术问答社区
为什么我从硬件串联和软件串联获得相同的性能?
我正在尝试接口(1)Linksprite JPEG颜色相机TTL接口 - 红外和(2)Arduino Mega 2560连接到我的笔记本电脑.虽然我能够打印图像的十六进制值,但是将1张图像打印到监视器中大约需要30秒.我以为是因为我正在使用软件,所以我尝试了硬件,但每张图像仍然30秒.使用硬件不应该更快吗?只是想知道,我需要一根特殊的电缆将Arduino连接到笔记本电脑吗? 我尝试了串行和串行1的波特率的不同组合. (Serial.Begin(9600),Serial1.Begin(38400)),(Serial.Begin(38400),Serial1.Begin(38400))它应该能够更高.)另外,我是否必须将波特率提高一定间隔,即9600,19200,38400,57600,74880,115200,115200,230400,250000? #include byte incomingbyte; //Configure p
0 2023-05-24
编程技术问答社区
MATLAB串口连接太慢
我有一个探测器,当我打开它时,以高速率吐出了两个数字.我一直在使用超级终端捕获我的数据,这似乎能够跟上设备. 我想自动化该过程并通过MATLAB完全控制设备,但发现只有不到一半的数据可以通过MATLAB. MATLAB的速度在该领域有任何已知问题吗? 这是我用来阅读数据的内容: s = serial('COM1', 'BaudRate', 115200, 'DataBits', 8, 'Terminator','CR/LF', 'InputBufferSize', 1024); T1 = 1; % Initial T1, T2 values T2 = 10000; timer = 300; % Inputs to serial device: T1, T2, runtime (seconds) fprintf(s, sprintf('%d %d %d\r', T1, T2, timer)); tdata = zeros(1e5,2,'uint16'
14 2023-05-24
编程技术问答社区
C# 串行端口速度
我正在开发一些基于串行通信的协议的监视工具. 串行baudrate = 187,5kb 我使用system.io.ports.serialport类. 该协议具有4种框架.他们有1 Byte,3 Bytes,6 Bytes,10-255 Bytes. 我可以与他们一起工作,但我收到他们为时已晚以无法响应. 开始,我在EX之后收到了第一次打包. 96ms(为时已晚),其中约为1000b.这意味着20-50帧(太多,为时已晚). 后来,它的工作更稳定,3-10分,但还为时已晚,因为它包含1-2帧.当然1帧还可以,但是2为时已晚. 您能指出我如何更可靠地处理它?我知道这是可能的. 修订1: 我尝试了直道: private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (!serialPort1.IsOpen) return;
0 2023-05-23
编程技术问答社区
System.IO.Ports.SerialPort和多线程
我有一些串行port代码,需要不断地从串行接口读取数据(例如com1).但这似乎是非常密集的,如果用户移动窗口或将大量数据显示到窗口(例如通过串行线接收到的字节),则通信会混乱. 考虑以下代码: void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] buffer = new byte[port.ReadBufferSize]; var count = 0; try { count = port.Read(buffer, 0, buffer.Length); } catch (Exception ex) { Console.Write(ex.ToString()); } if (count == 0) return; //Pass the data to the IDataCollector, if response != null an en
2 2023-05-23
编程技术问答社区
与文件名冲突的导入
我正在尝试开发一个在特定应用程序上取代serial的模拟类(win7,python 2.7). 我有一个在数量上工作的类SerialHandle类,它的工作是为众所周知的序列方法添加逻辑,其想法是用带有相同名称的虚拟文件替换Python serial.py,因此我们赢了' t必须在SerialHandle中更改和导入. 现在,我将此文件带有Serial类,就像原点一样,它正常工作: serial.py ...Serial() 由于我想真正模拟我需要SerialException serialutil的方法 因此,在我的序列中,我试图使用以下方式导入它: from serial import SerialException ,但正如预期的那样,我将得到加薪,因为from serial首先要转到本地文件: Traceback (most recent call last): File "C:/CROW/ATE/DUTDrivers/DD_Simul
6 2023-05-22
编程技术问答社区
如何将用Pascal编写的RS232C接口通信解释为C#语言
我有一个示例Pascal程序,在硬币计数器S350/360机器的技术手册中提供,可以使用RS232C电缆在计算机和计算机之间进行通信.我想出了以下等效的C#代码,出于某种原因,只有仅需要将数据写入串行端口的过程才能成功执行和工作.我只能将数据写入端口,但不能从中读取任何数据.我使用串行嗅探器对此进行了检查,事实证明,它仅使用C#程序写在端口上的嗅探数据,但无法读回任何数据.你们能帮我解决这里发生的事情吗? 首先是样本程序的原始Pascal代码. uses crt; const { COM1: RS232 port address } RXTX = $3F8; { $2F8 if COM2: is used } ACK = 6; NAK = 21; ESC = 27; var dummy, checkSum : integer; key : char; protocol : integer; procedure InitComm; { Set baudrate to 96
4 2023-05-20
编程技术问答社区
Linux shell:每分钟从串行端口保存输入行并发送至远程服务器
我已经通过RS-232连接到计算机(仅TXD,RXD和GND). Arduino仅将数据发送到计算机,并且计算机接收到它.计算机不将任何内容传输到Arduino. 计算机是带有16MB RAM的OpenWrt Linux的WiFi路由器,系统的4MB闪存.我没有足够的空间来像Python这样的"好工具"(我在用Python编写的X86 PC上使用相同的工作程序). arduino将数据发送到PC + - 每60秒.数据具有以下格式: SENSOR1;12.34;95.47 ABC245;34.5;75.1 2个传感器每个具有2个值.线使用结束.我可以将此"协议"修改为例如(或任何其他)的一行: SENSOR1;12.34;95.47|ABC245;34.5;75.1 因此,在WiFi路由器上,我需要很少的程序,每分钟都会读取此字符串并将其保存到变量.此变量插入到curl并发送到远程服务器.我可以不用卷曲即可将数据发送到服务器(使用RA
6 2023-05-20
编程技术问答社区
解析有时间限制的UART数据
试图正确逆转工程并解码UART连接的数据时,我得出了以下有关收到数据格式的结论. 数据以"数据包"发送.每个数据包仅按传输之间的时间(空间)界定. 数据包的长度可变.长度由序列中的第三个字节指定. 数据是不是使用任何特殊字符或带外信号构建的,但是基于最终字节,这是一个校验和值框架. 使用逻辑分析仪时,很容易辨别数据包.但是,通过UART将数据馈送到程序使划界数据包不可能.所有收到的数据均由操作系统出现.虽然可以添加某些处理程序以触发收到的数据事件,但这并不能确保OS的UART队列中可用的数据将是整个数据包. 是否有分离此类数据的最佳实践? 附录: 我当前的解决方案(它的开销很大,错误率很大): 从队列中的第一个字节开始,请尝试解析框架.如果框架中指定的尺寸大于0x20(没有大于32 bytes的数据包(包括标题和校验和校验和)),则当前的" start Byte"被认为是无效的,并且掉落了,并且从下一个字节等继续进行重生) 我正在使用的另一个解决
2 2023-05-20
编程技术问答社区
以串行对象为参数的多进程
我对python有问题,并将序列对象作为参数传递给单独的过程.该程序是在Windows 8中运行的,因此使用全局变量不是一个选项. from multiprocessing import Queue from multiprocessing import Process import os import serial from serial.tools import list_ports from time import sleep displayMessages = Queue() modemPort = None def processDisplayMessages(displayMessages): while True: msg = displayMessages.get() #should halt until message in queue print msg def processIncomingSerialMessa
2 2023-05-19
编程技术问答社区